我希望用户为JSF的inputText组件输入一个或多个名称。
所以我在想这样的托管bean:
public class MyBean {
private String[] names;
public String[] getNames() {
return names;
}
public void setNames(String[] names) {
this.names = names;
}
}
但是,如何将JSF的inputText组件映射到此array属性?
最佳答案
首先,您需要将数组保留在bean的(后)构造函数中。例如。
public MyBean() {
names = new String[3];
}
然后,您可以通过硬编码索引访问它们
<h:inputText value="#{myBean.names[0]}" />
<h:inputText value="#{myBean.names[1]}" />
<h:inputText value="#{myBean.names[2]}" />
或将
<ui:repeat>
与varStatus
一起使用以通过动态索引访问它们<ui:repeat value="#{myBean.names}" varStatus="loop">
<h:inputText value="#{myBean.names[loop.index]}" />
</ui:repeat>
不要使用
var
属性,例如<ui:repeat value="#{myBean.names}" var="name">
<h:inputText value="#{name}" />
</ui:repeat>
当您提交表单时,它将不起作用,因为
String
没有值的设置方法(getter基本上是toString()
方法)。关于jsf - 如何将多个inputText映射到数组属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6741573/