Я немного застрял в части данных PrimeTaces. Я создал таблицу с встроенными методами rowEditor и sortBy, но когда я изменяю строку в таблице, порядок записей не обновляется.
Теоретически, он должен работать: update=":form:fruits"
. Но он не обновляет измененную строку. Поэтому я попытался обновить всю форму: update=":form"
. Но в этом случае я теряю все данные из таблицы, кроме обновленной, без каких-либо изменений.
ScreenShot01 ScreenShot02
Вот очень короткий пример кода, чтобы воспроизвести проблему.
Fruit.java:Основные данные dataTable sort after rowEdit
public class Fruit {
private Integer id;
private String name;
public Fruit(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (!(o instanceof Fruit)) {
return false;
}
return id == ((Fruit) o).getId();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Fruits.java:
@ManagedBean(name = "fruits")
@ViewScoped
public class Fruits implements Serializable {
private static final long serialVersionUID = 1L;
private ArrayList<Fruit> list = new ArrayList<Fruit>() {
{
add(new Fruit(1, "apple"));
add(new Fruit(2, "orange"));
add(new Fruit(3, "banana"));
add(new Fruit(4, "pineapple"));
add(new Fruit(5, "cocoa"));
}
};
public void onRowEdit(RowEditEvent event) {
Fruit fruit = (Fruit) event.getObject();
list.set(list.indexOf(fruit), fruit);
}
public ArrayList<Fruit> getList() {
return list;
}
public void setList(ArrayList<Fruit> list) {
this.list = list;
}
}
fruits.xhtml:
<h:head />
<h:body>
<h:form id="form">
<p:dataTable id="fruits" value="#{fruits.list}" var="fruit"
editable="true" sortBy="#{fruit.name}">
<p:ajax event="rowEdit" listener="#{fruits.onRowEdit}" update=":form"></p:ajax>
<p:column headerText="Name" sortBy="#{fruit.name}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{fruit.name}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{fruit.name}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column>
<p:rowEditor />
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
Любые идеи, как я мог бы исправить эту проблему?
У меня такая же проблема, кто-нибудь нашел решение? – gregor