2

我有一个名为的字段numberOfGuests,它采用整数值。当我提交页面时,我想p:inputText在下一页中numberOfGuests动态插入与值一样多的字段。ui:repeat只允许我遍历一个集合。我想知道我该怎么做。

谢谢。

4

1 回答 1

5

只需创建一个 size 的集合(或者更简单的数组)numberOfGuests

例如在视图范围的 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}"

于 2013-09-28T11:30:40.640 回答