我需要根据辅助bean中的值创建许多输入框。如果产品允许5个用户,我需要5组输入字段。
加载页面时,输入框的数量已知。
有什么想法吗? 这个让我难倒了一段时间。
答案 0 :(得分:3)
让bean根据数字准备List<Item>
。
@ManagedBean
@ViewScoped
public class Bean {
private int count;
private List<Item> items;
public Bean() {
count = 5;
items = new ArrayList<Item>();
for (int i = 0; i < count; i++) {
items.add(new Item());
}
}
public void submit() {
System.out.println(items);
}
public List<Item> getItems() {
return items;
}
}
Item
只是一个具有value
属性的简单Javabean。
让视图使用<ui:repeat>
或<h:dataTable>
迭代它。
<h:form>
<ui:repeat value="#{bean.items}" var="item">
<h:inputText value="#{item.value}" /><br />
</ui:repeat>
<h:commandButton value="Submit" action="#{bean.submit}" />
</h:form>
答案 1 :(得分:0)
在简单的Jsf中很难做到。您可以基于Javascript库和Ajax编写自己的组件。 (ajax是可选的)或者如果您可以使用像IceFaces或Rich Faces这样的JSF变体,那么框架将为您完成大部分繁重工作。
例如,对于Icefaces,可以使用simple panel series实现。