0

私は現在、カルーセルから開かれたダイアログがデータベース内の何かを変更し、結果が画面に表示される 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 にすべてをコピーすることもできますが、これはあまり良い解決策ではありません。

4

0 に答える 0