如何动态插入primefaces输入文本?

时间:2013-09-28 06:55:29

标签: jsf primefaces

我有一个名为numberOfGuests的字段,它取一个整数值。当我提交页面时,我希望在下一页中插入尽可能多的p:inputText字段作为numberOfGuests值。 ui:repeat只允许我遍历集合。我想知道如何做到这一点。

感谢。

1 个答案:

答案 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}"左右。