私は現在、カルーセルから開かれたダイアログがデータベース内の何かを変更し、結果が画面に表示される Web サイトを実装しようとしています。そのために、ダイアログ内の領域を更新しようとしました。残念ながら、カルセル内の更新はうまくいかないようです。
コードを最小限の例に短縮したので、次のコードを使用します。
<p:carousel id="page" value="#{pagebean.pages}"
var="item" numVisible="1">
<h:form id="dlg_2_form">
<h:outputText id="test_2" value="#{pagebean.value}" />
<p:remoteCommand name="update_2" update="test_2" />
<a href="#" onclick="update_2();"> Increment</a>
</h:form>
</p:carousel>
[インクリメント] をクリックしても関数pagebean.value
は呼び出されませんが、[インクリメント] をクリックするとのコンストラクターpagebean
が呼び出されます。そのため、カルーセルによってその中の何かを更新できなくなっているようです。
カルーセルにあるものを更新する可能性があるかどうか、またはこの問題の回避策があるかどうか、誰かが知っていますか?
編集: 以下の説明の後、対応する Bean のスコープが @ViewScoped に設定されている場合、インクリメントが機能することがわかりました。また、widgetVar を指定してクリック機能にアクセスすることで、このボタンをトリガーすることもできます。残念ながら、使用したい Bean は SessionScoped であり、この種のビューでは機能しません。この問題を解決する方法のヒントはありますか? ViewScoped である 2 番目の Bean にすべてをコピーすることもできますが、これはあまり良い解決策ではありません。