p:datatable で onEdit を使用してきましたが、正常に動作します。データ テーブルには pagintor があり、ページごとに 5 つのレコードが表示されます。そのため、最初のページ event.getObject で onEdit をクリックすると、Bean で変更された値が取得されます。次のページに移動すると、event.getObject が機能せず、古い値のみが返されます。
ダイアログボックスと同じです。テーブルには、クリックするとリンクがあり、選択した行の値をいくつかのフィールドに入力しているダイアログボックスが開きます。最初のページでは正常に機能し、他のページに移動すると空になります値。
ここに私のjsfコードがあります:
<p:dataTable value="#{mybean.userList}"
var="item"
id="dataTab"
widgetVar="usersTable"
tableStyleClass="data" paginator="true" rows="5"
filteredValue="#{userController.filteredUsers}"
editable="true"
rowKey="#{item}"
>
<p:ajax event="rowEdit" listener="#{mybean.onEdit}" update=":userForm:growl" />
<p:ajax event="rowEditCancel" listener="#{mybean.onCancel}" update=":userForm:growl" />
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="('usersTable').filter()" style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column sortBy="#{item.firstName}" filterBy="#{item.firstName}"
filterMatchMode="startsWith">
<p:cellEditor>
<f:facet name="header">
<h:outputText value="First Name" />
</f:facet>
<f:facet name="output">
<h:outputText value="#{item.firstName}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{item.firstName}" style="width:100%"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy="#{item.lastName}" filterBy="#{item.lastName}" filterMatchMode="startsWith">
<p:cellEditor>
<f:facet name="header">
<h:outputText value="Last Name" />
</f:facet>
<p:column headerText="Update" style="width:6%">
<p:rowEditor />
</p:column>
</p:dataTable>
<p:dialog id="modalDialog"
header="Delete User?"
modal="true"
resizable="false"
draggable="false"
widgetVar="delUserConf"
>
<h:panelGrid id="display" columns="2" style="width: 150px;">
<h:outputLabel value="Firat Name" style="font-weight: bold"/>
<h:outputText value="Last Name" style="border: none"/>
</h:panelGrid>
</p:dialog>
編集機能の Bean のコードは次のとおりです。
public String onEdit(RowEditEvent event)
{
User user=(User)event.getObject());
user.getFirstName();
}
ダイアログをポップアップするフォームにあるリンクを追加しませんでした。また、これは遅延読み込みが原因である可能性があることを読みましたが、それについてはわかりません。テーブルにモデルではなくリストを入力しています。
それを機能させるにはどうすればよいか教えていただけますか?