我有一个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>
答案 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