<p:dataTable>
以下のように行エディタでデータを編集しています。
<p:dataTable value="#{bean.users}" var="user" editable="true">
<p:ajax event="rowEdit" listener="#{bean.onRowEdit}" />
<p:ajax event="rowEditCancel" listener="#{bean.onRowEditCancel}" />
<p:column>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{user.firstName}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{user.firstName}" />
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
バッキング Bean は次のように実装されます。
private List<User> users;
@EJB
private UserService userService;
public List<User> getUsers() {
users = userService.list();
return users;
}
cellEditor に新しいデータを入力して送信すると、リスナー メソッドでは使用できません。データベースから呼び出されたデータによって上書きされることに気付きました。
これはなぜ起こり、どうすれば回避できますか?