使用 a Set
,这是不可能的,因为它不允许通过索引或键引用项目。但是,只需在输入值中指定列表索引和映射键,就可以使用 aList
和 a Map
。
有一个List
:
private List<String> list; // +getter (no setter necessary)
@PostConstruct
public void init() {
list = createAndFillItSomehow();
}
<ui:repeat value="#{bean.list}" varStatus="loop">
<h:inputText value="#{bean.list[loop.index]}" />
</ui:repeat>
使用 a Map
(仅当您的环境支持 EL 2.2 或 JBoss EL时):
private Map<String, String> map; // +getter (no setter necessary)
@PostConstruct
public void init() {
map = createAndFillItSomehow();
}
<ui:repeat value="#{bean.map.entrySet().toArray()}" var="entry">
<h:inputText value="#{bean.map[entry.key]}" />
</ui:repeat>
应该注意的是,规范的方法是使用List
完全值得的 javabean。让我们假设一个Par
以属性命名的 Javabean 类id
,value
它精确地映射到par
DB 中的一个表,其中的列id
和value
:
private List<Par> pars; // +getter (no setter necessary)
@PostConstruct
public void init() {
pars = createAndFillItSomehow();
}
<ui:repeat value="#{bean.pars}" var="par">
<h:inputText value="#{par.value}" />
</ui:repeat>
无论哪种方式,它在使用时都一样好<p:inputText>
,它与 PrimeFaces 没有任何关系,它在这个问题的上下文中仅仅是一个基于 jQuery 的 JSF UI 组件库。只需替换h:
即可p:
将其打开。