ナビゲーションにSpringWebFlowを使用するJSFアプリケーションがあります。ユーザーが別のビューからアカウントビューに移動するたびに、コードを実行する必要があります。アカウントビューには、accountsBeanという管理対象Beanがあります。フローエントリ時にBeanからinitViewメソッドを呼び出すことを考えました。accountBeanがSpringによって認識されないため、PropertyNotFoundExceptionがスローされます。
WEB-INF/flows/accounts-flow/flow.xml
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<view-state id="accounts" view="accounts.xhtml">
<on-entry>
<evaluate expression="accountsBean.initView()"></evaluate>
</on-entry>
</view-state>
</flow>
EDIT1:
私のアプリケーションの一部がアカウントとグループを管理しています。ユーザーは、メニューを使用してアプリケーションのさまざまな部分間を移動します。Spring Web Flowは、メニュー項目から特定のビューへのナビゲーションをリンクするために使用されます。アカウントビューには、データテーブル、CRUD操作用のいくつかのボタン、およびアカウントのタイプを選択するための選択ボックスが含まれています。タイプに応じて異なるアカウントが表示されます。データテーブルの列は動的です。ユーザーは、特定のタイプをアクティブ化または非アクティブ化できます。ここで、ユーザーはアカウントタイプの変更を確認するためにログアウトする必要があります。ログアウトせずに動作させる必要があります。
EDIT2:フロー定義を次のように変更しました:
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<var name="accountsFlow" class="com.acme.accounts.AccountsFlow" />
<view-state id="accounts" view="accounts.xhtml">
<on-entry>
<evaluate expression="accountsFlow.initView()"></evaluate>
</on-entry>
</view-state>
</flow>
AccountsFlowには。という注釈が付けられていorg.springframework.stereotype.Component
ます。initViewメソッド内で、からのコードaccountsBean
が実行されます。これはSessionScoped
Beanで機能しますが、BalusCによって提案されたソリューションの方が優れています。