如何添加/删除行(inputText,ouputText)JSF?

时间:2015-04-18 00:56:50

标签: jsf primefaces jsf-2.2

我有这个:

<p:outputLabel for="author" value="Author " rendered="#{documentController.show}"/>

<p:selectOneMenu id="author"
                 value="#{documentController.author}"
                 rendered="#{documentController.show}"
                 effect="fade"
                 editable="true"
                 filter="true"
                 filterMatchMode="startsWith">

    <f:selectItem itemLabel="Select One" itemValue="" />
    <f:selectItems value="#{authorController.itemsAvailableSelectOne}" />
</p:selectOneMenu>

enter image description here

我想得到这样的行为:如果我点击作者字段旁边的添加图标,然后为我的第二个作者创建另一个'outputText,SelectOneMenu,添加链接,删除链接',如果我点击另一个添加图标然后创建第三作者等等。

删除图标同样如此。

1 个答案:

答案 0 :(得分:1)

你可以这样。

<h:form id="form1">
    <h:panelGroup id="panel1">
        <ui:repeat value="#{documentController.author}" var="auth">

            <p:outputLabel for="author"
                           value="Author "
                           rendered="#{documentController.show}"/>

            <p:selectOneMenu id="author"
                             value="#{auth}"
                             rendered="#{documentController.show}"
                             effect="fade"
                             editable="true"
                             filter="true"
                             filterMatchMode="startsWith">

                <f:selectItem itemLabel="Select One" itemValue="" />
                <f:selectItems value="#{authorController.itemsAvailableSelectOne}" />
            </p:selectOneMenu>

            <h:commandLink value="Add">
                <f:ajax execute="@form"
                        render=":form1:panel1"
                        listener="#{documentController.addAuthor}" />
            </h:commandLink>
        </ui:repeat>
    </h:panelGroup>
</h:form>

在支持bean上你可以做这样的事情。

List<String> author = new ArrayList<String>();
String s1 = "";
author.add (s1);

public void addAuthor(AjaxBehaviorEvent ajaxEvent) {
    String s = ""
    author.add(s);
}