У меня есть динамическая dataTable, которая добавляет и удаляет объекты. Это отлично работает, когда я не использую ajax. Однако, когда я использую ajax, возникает проблема. Вначале добавление значений прекрасное. Однако, когда я начинаю удалять объекты, когда я удаляю последний объект, список элементов также удаляется и становится нулевым. Я использую jsf 2.2 с первичными. Я не уверен, что вызывает эту проблему. Мой код выглядит следующим образом.Dynamic dataTable form удаляет свой массив при использовании ajax
item.xhtml
<h:panelGroup id="list">
<h:dataTable value="#{item.items}" var="object">
<h:column>
<!-- Figure out what these facets are or delete them -->
<f:facet name="keys">Keys</f:facet>
<p:inputText value="#{object.x}" />
</h:column>
<h:column headerText="Values">
<f:facet name="values">Values</f:facet>
<p:inputText value="#{object.y}" />
</h:column>
<h:column>
<h:commandLink value="Delete" action="#{user.removeObject(object)}">
<f:ajax execute="@form" render="@form" />
</h:commandLink>
</h:column>
</h:dataTable>
<h:commandButton value="add" action="#{user.addObject}">
<f:ajax execute="@form" render="@form" />
</h:commandButton>
</h:panelGroup>
item.java
@ManagedBean
@ViewScoped
public class Item implements Serializable{
public void addObject(){
Pair<String,String> tempPair = new Pair<String,String>("","");
items.add(tempPair);
return;
}
public void removeObject(Pair<String,String> i){
items.remove(i);
return;
}
}
UPDATE 1
Я попытался с помощью JSF 2.1 вместо этого, меняю viewAction к preRenderView, и мой код работает отлично ,
Вы пытались ограничить компоненты, оказанные вашим вызовом ajax? Вам не нужно переписывать весь родительский '' просто для удаления строки из таблицы. –
Gamb
Я попытался изменить 'f: ajax' на' ', но, хотя добавление работает, удаление не работает. –
user2471366
Какова область действия управляемого компонента? Можете ли вы показать полный код управляемого компонента? –