我有一个名为的字段numberOfGuests
,它采用整数值。当我提交页面时,我想p:inputText
在下一页中numberOfGuests
动态插入与值一样多的字段。ui:repeat
允许我只迭代一个集合。我想知道我怎么能做到这一点。
谢谢。
只需创建一个 size 的集合(或者更简单的数组)numberOfGuests
。
例如,在视图范围的 bean 中:
private Integer numberOfGuests; // +getter+setter
private String[] guests; // +getter
public void submit() {
guests = new String[numberOfGuests];
}
Run Code Online (Sandbox Code Playgroud)
和
<h:form>
<p:inputText value="#{bean.numberOfGuests}" />
<p:commandButton value="submit" action="#{bean.submit}" update=":guests" />
</h:form>
<h:panelGroup id="guests">
<h:form rendered="#{not empty bean.guests}">
<ui:repeat value="#{bean.guests}" varStatus="loop">
<p:inputText value="#{bean.guests[loop.index]}" />
</ui:repeat>
<p:commandButton value="save" action="#{bean.save}" />
</h:form>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
结果只是显示在与保持视图范围的 bean 实例处于活动状态的相同视图中,并且输入字段通过索引而不是 by 引用值,var
因为String
在此示例中是不可变的。如果它是一个像 一样的复杂对象Guest
,那么只需像value="#{guest.name}"
左右那样以“通常”的方式绑定它们。