3

我有一个 JSF 2.0 应用程序,它有一个包含字符串列表的 bean。

我想将字符串从 an 添加<h:inputText>/>到我的列表并显示我的列表。

以下代码只是将引用放在我的列表中。所以我列表中的每个元素都设置为最后一个输入。

@ManagedBean
@ApplicationScoped
public class Bean {

private String name;
private ArrayList<String> test = new ArrayList<String>();

public Bean() {
}

public Bean(String name) {
    this.name = name;
}


public String addtoList(String _name){
    test.add(_name);
    return "./index.xhtml";
} 


/***************GETTER/SETTER/HASHCODE/EQUALS**************************/
   ...

}

这是我的 index.xhtml 的一部分:

        <h:inputText id="name"
                         value="#{bean.name}"
                         required="true">
        </h:inputText>
        <h:commandButton value="Post"  
                         action="#{bean.addtoList(name)}"/>  
        <br/>
        <h:dataTable var="bean"
                     value="#{bean.test}">
            <h:column>
                <h:outputText value="#{bean.name}"/>
            </h:column>

        </h:dataTable>

应用示例

4

2 回答 2

3

试试这个:

public String addtoList() { // no parameter
    test.add(this.name); // add value of bean's property
    return "./index.xhtml";
}

在facelet中:

<h:commandButton
    value="Post"
    action="#{bean.addtoList}"/> <!-- no parameter passed -->

关键是要有addToList没有参数的方法,并且添加到列表中的字符串应该是name支持 bean 的属性的值。

而且,在数据表中,不要将其命名var为与支持 bean 相同的名称。这很令人困惑,并可能导致错误。使用这样的东西:

<h:dataTable
    var="it"
    value="#{bean.test}">
    <h:column>
        <h:outputText value="#{it}" />
    </h:column>
</h:dataTable>
于 2012-11-28T17:06:12.750 回答
0
<h:dataTable var="beany"
                         value="#{bean.test}">
                <h:column>
                    <h:outputText value="#{beany}"/>
                </h:column>

</h:dataTable>

问题是那var="bean"是我班级的同名bean 更好应该是另一个名字var

于 2012-11-28T17:45:39.207 回答