0

ナビゲーションに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が実行されます。これはSessionScopedBeanで機能しますが、BalusCによって提案されたソリューションの方が優れています。

4

1 に答える 1

0

BalusCによる最初のコメントは正しいですが、SpringはViewScopeをすぐにサポートしていません。独自のカスタムViewScopeを実装し、SpringapplicationContext.xmlファイルを介して宣言する必要があります。このオンラインの多くの例があります:

http://cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/

于 2012-09-05T11:44:53.287 に答える