我希望用户为JSF的inputText组件输入一个或多个名称.所以我想的是这样的托管bean:
public class MyBean {
private String[] names;
public String[] getNames() {
return names;
}
public void setNames(String[] names) {
this.names = names;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如何将JSF的inputText组件映射到此数组属性?
Bal*_*usC 14
首先,您需要在bean的(post)构造函数中保留数组.例如
public MyBean() {
names = new String[3];
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以要么只是一个硬编码的索引来访问它们
<h:inputText value="#{myBean.names[0]}" />
<h:inputText value="#{myBean.names[1]}" />
<h:inputText value="#{myBean.names[2]}" />
Run Code Online (Sandbox Code Playgroud)
或者使用<ui:repeat>
a varStatus
来通过动态索引访问它们
<ui:repeat value="#{myBean.names}" varStatus="loop">
<h:inputText value="#{myBean.names[loop.index]}" />
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
千万不能使用var
类似属性
<ui:repeat value="#{myBean.names}" var="name">
<h:inputText value="#{name}" />
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
提交表单时它不起作用,因为String
没有值的setter(getter基本上就是toString()
方法).