Могу ли я добавлять / удалять компоненты Primefaces динамически?

#jsf-2 #primefaces

#jsf-2 #primefaces

Вопрос:

Как я могу динамически добавлять / удалять вводимый текст primefaces?

Комментарии:

1. Меня удивило, что вы приняли ответ Мишеля, я имел в виду совершенно другое функциональное требование. Решение Michel потребует фиксированного количества подготовленных входных данных в представлении, в то время как вы, похоже, хотите, чтобы пользователь добавлял / удалял неопределенное количество динамически.

2. Согласен с вами. Поскольку я был новичком в этом, я думал, что это сработает. Но это будет работать, только если у нас будет фиксированное количество подготовленных входных данных, как вы сказали .. Но я сделал некоторое обходное решение и подготовил его к работе без использования rendered.

3. Затем вы должны опубликовать это в качестве подробного ответа и принять себя.

Ответ №1:

Чтобы добавить / удалить текстовые поля, попробуйте следующие фрагменты.

  <h:panelGrid columns="1" cellpadding="10">
        <h:commandButton value=" " action="#{contactBean.addPhone}"
            image="../images/addbtn.png" />
        <p:dataTable border="0" value="#{contactBean.phoneNos}" var="p"
            rowIndexVar="rowIndex" emptyMessage="No phone numbers entered">
            <p:column>
                <h:selectOneMenu id="extraTask1" value="#{p.phoneType}">
                    <f:selectItem itemLabel="Select" itemValue="" />
                    <f:selectItem itemLabel="Mobile" itemValue="Mobile" />
                    <f:selectItem itemLabel="Work" itemValue="Work" />
                    <f:selectItem itemLabel="Others" itemValue="Others" />
                </h:selectOneMenu>
            </p:column>
            <p:column>
                <p:inputText value="#{p.phoneNo}" />
            </p:column>
            <p:column>
                <h:commandButton value="remove" image="../images/button_remove.gif"
                    actionListener="#{contactBean.removePhone}">
                    <f:param name="columnToRemove" value="#{rowIndex}" />
                </h:commandButton>
            </p:column>
        </p:dataTable>


    </h:panelGrid>
  

Комментарии:

1. Я использую p:dataGrid для решения аналогичной проблемы, но компоненты внутри него имеют одинаковые идентификаторы. У вас были те же проблемы? В чем причина использования p:dataTable ? Заранее спасибо

2. У меня не было этой проблемы. В настоящее время все значения публикуются в списке. Во всяком случае, я не пробовал с p:dataGrid .

3. При использовании DataTable все данные обрабатываются списком. И потому, что проще обновить компонент PrimeFaces с возможностью обработки данных, который предоставляет возможность некоторого динамического компонента.

Ответ №2:

Это простой режим:

 <h:inputText rendered="#{object.visibile}" /> 
  

если object.visibile == true входной текст виден.