如何动态插入素面输入文本?

Raj*_*ath 2 jsf primefaces

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

谢谢。

Bal*_*usC 5

只需创建一个 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}"左右那样以“通常”的方式绑定它们。