私はデータテーブルを持っています。テーブルの各行にと呼ばれるcommandButton
があります。は、その行をモデルとビューから削除し、インプレースで更新を実行することになっています。フッタとして、と呼ばれる別のcommandButton
があります。「すべての行を削除してください」データテーブルが正常にajax呼び出し後に更新されません
最後のボタンが機能します。クリックすると、すべての行がモデルから削除されます(つまり、要素を含むArrayList
が空になります)、dataTable
とfooter facet
がビューで再レンダリング(または更新)されます。
一方、いずれかの行のボタンをクリックすると、それを削除するために部分的に機能します。対応する要素はモデルから削除されますが、ビューは更新されません。その行はまだdataTable
にあり、footer facet
は変更されていません。
私はusers.xhtml
に次のコードを書いています。
<f:metadata>
<f:viewParam name="id" value="#{users.id}" />
<f:event type="preRenderView" listener="#{users.init}" />
</f:metadata>
...
<h:form id="usersForm">
<p:outputPanel>
<p:dataTable id="userTable" value="#{users.user.friendList}" var="friend">
<p:column>
<h:outputText value="#{friend.name}" />
</p:column>
<p:column>
<p:commandButton action="#{users.user.removeFriend(friend)}"
ajax="true"
update="userTable somethingElse" process="@this"
onerror="errorDialog.show();"
icon="ui-icon-delete"
title="delete user">
</p:commandButton>
</p:column>
<f:facet id="somethingElse" name="footer">
aye: ${users.user.xxx}
</f:facet>
</p:dataTable>
</p:outputPanel>
<p:commandButton action="#{users.user.removeAllFriends()}" ajax="true"
update="userTable somethingElse"
process="@this"
icon="ui-icon-close"
value="delete all friends?">
</p:commandButton>
</h:form>
ここで問題は何だと思いますか?それはPrimefacesのdataTableコンポーネントと共通のバグが原因であるように、これは思えるようおそらくPrimefaces 2.2.1を使用している3.0
1つの質問で複数の質問をしないでください。質問ごとに1つの質問:私は他の質問を編集しました。またリンク先の質問は全く関連していません。それはおそらく同じコードですが、問題は全く同じではありません。あなたの現在の問題については、どのPFバージョンを使用していますか?代わりに 'update =" @ form "'を使用するとどうなりますか? – BalusC
悪い言葉を残して申し訳ありませんが、もう一度感謝します:)複数の質問について、私は次回に最善を尽くすように努力します:) –
私は答えとして再投稿しました: – BalusC