2017-06-22 10 views
1

私はSpring/JSFの新機能です。BeanがPrimeFacesで@Scope( "request")に変更されたときにAjax呼び出しが機能しない

私は私が私のコントローラが動作します@Scope("request")でアノテートされたそれぞれの新しい要求のための新しいUserClassインスタンスを作成する必要があり@AutowiredクラスUserClassを持って@Componentで注釈されているコントローラ、

@Scope(value=org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE) 

を持っていますこのアノテーションで完全に(リクエストごとに新しいインスタンスを作成する)

しかし、それは、<f:setPropertyActionListener...

NOTEを<p:dataTable>選択、commondLinkでAJAX呼び出しを破った:私は@Scope("request")@ViewScopedにAjaxの作品を変更するが、私のUserClassがシングルトンとなり、すべてのデータをスレッド間で共有されている場合。

JSFアノテーションまたはSpringのいずれかを使用する必要があることを知りましたが、ここではSpringアノテーションのみを使用しています。

私はこれを見つけました。PrimeFaces doesn't work when bean scope is requestが理解できませんでした。

答えて

1

プライムフェースのようなコンポーネントライブラリは、ステートフルモデルに大きく依存しています。これは、少なくともマネージドBeanのビュースコープを使用することを意味します。リクエストスコープを使用する場合は、1つのリクエストごとにマネージドBeanを再作成します。にはajaxリクエストが含まれています。これは少なくともJSFには向いていません。

JSFビュースコープをエミュレートするには、カスタムSpringスコープを使用することをお勧めします。私はthis approachがPFチーム(ちょっと古い投稿ですが、それでも新しいSpring版のために調整することができます)またはthis oneが好きです。これはもっと精巧です。

関連する問題