JSF:向List添加字符串

时间:2012-11-28 16:14:33

标签: list jsf

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

我想将<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>

apllicationExample

2 个答案:

答案 0 :(得分:3)

试试这个:

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

并在脸上:

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

关键是要使用不带参数的addToList方法,并且添加到列表中的字符串应该是辅助bean的name属性的值。

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

<h:dataTable
    var="it"
    value="#{bean.test}">
    <h:column>
        <h:outputText value="#{it}" />
    </h:column>
</h:dataTable>

答案 1 :(得分:0)

<h:dataTable var="beany"
                         value="#{bean.test}">
                <h:column>
                    <h:outputText value="#{beany}"/>
                </h:column>

</h:dataTable>

问题是var="bean"与我的班级bean的名称相同 更好的应该是var

的另一个名称