1

アプリケーションで PrimeFaces を使用しています。このアプリケーションでは、データ テーブルにデータが入力されています。また、編集コマンド ボタンが 1 つあります。

ここで、新しい JSF ページを開きたいと思います。これを行うアクションは、ビュー スコープ内のバッキング Bean にバインドされます。アクション メソッドでは、Bean の値にアクセスできますが、新しい JSF ページでは、この Bean の値にアクセスできなくなりました。

これは私のコードです:

<p:commandLink title="Edit" id="editBtn" action="#{personRegisterController.selectPerson}">
    <f:setPropertyActionListener value="#{person}" target="#{personRegisterController.personBean}"/>
</p:commandLink>
4

1 に答える 1

4

JSF のビュー スコープは、単一のビュー (ページ) のみを伴うスコープです。したがって、同じビューにポストバックする限り、ビュー スコープ Bean のデータは保持されます。

ただし、新しいビューに移動するとすぐに、新しいビュー スコープが開始されます。つまり、ビュー スコープを使用してビュー間 (異なるページへの要求間) でデータを転送することはできません。

この転送を行う方法については、この回答を参照してください: p:commandButton does not execute f:setPropertyActionListener in JSF 2

setPropertyActionListenerちなみに、ここでやっていることには必要ないことに注意してください。アクション メソッドにデータを直接提供できます。

<p:commandLink action="#{personRegisterController.selectPerson(person)}"/>
于 2012-08-19T15:03:30.763 に答える