我有一个名为numberOfGuests
的字段,它取一个整数值。当我提交页面时,我希望在下一页中插入尽可能多的p:inputText
字段作为numberOfGuests
值。 ui:repeat
只允许我遍历集合。我想知道如何做到这一点。
感谢。
答案 0 :(得分:4)
只需创建一个大小为numberOfGuests
的集合(或更简单的数组)。
E.g。在视图范围内的bean:
private Integer numberOfGuests; // +getter+setter
private String[] guests; // +getter
public void submit() {
guests = new String[numberOfGuests];
}
与
<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>
结果显示在同一视图中,因为它使视图范围bean实例保持活动状态,输入字段按索引而不是var
引用值,因为此示例中的String
是不可变的。如果它是像Guest
这样的复杂对象,那么只需将它们绑定为{常规'方式,如value="#{guest.name}"
左右。