5

セッション スコープの JSF マネージド Bean をビュー スコープに変換しようとしています。ただし、この Bean の xhtml ページにアクセスしようとすると、次のエラーが発生します。

java.io.NotSerializableException: foo.bar.SomeDaoClass

Bean 内の永続性関連のタスクを委任するために使用するヘルパー DAO のメンバーがあります。この DAO クラスに Serializable を実装すると、他の UIComponent 参照が同じエラーを引き起こし始めます。

主な使用例は、セッション Bean によってサポートされている xhtml ページを表示する jquery ライトボックス ポップアップを開くリンクをクリックすることです。ユーザーがポップアップ フォームの送信ボタンをクリックすると、セッション Bean がプログラムによって削除されます。問題は、ユーザーがポップアップ自体の閉じるボタンをクリックし、別の ID を指す別のリンクをクリックすると、同じ値が表示されることです (セッション スコープで)。

ビュー スコープを使用して、このフォームをポップアップで表示しているときに値を保持したいと思います。ユーザーがポップアップの閉じるボタンをクリックすると、値が破棄される場合があります。

4

2 に答える 2

5

この問題はすでに解決されていると思いますが、セッションスコープを使用せず、代わりにビュースコープを使用するserializableため、実装を使用する必要がある他の人transientは、プロパティの横にあるキーワードを使用できます。あなたが作りたくないserializable、あなたがサービスやダオに電話したいなら、それは非常に役に立ちます。

例:

@ManagedBean(name="addressTableBeanExample4")
@ViewScoped
public class ExampleBean4 implements Serializable {

    private static final long serialVersionUID = 1L;

    // non serialazable class
    private transient List<Customer> data = new ArrayList<Customer>();

    private Customer selected;
}
于 2011-09-16T21:47:48.250 に答える
4

Balusc ブログ http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.htmlを参照

「一言で言えば、バインド属性を使用してUIComponentがBeanにバインドされると、@ViewScopedが壊れます」

于 2011-03-29T08:59:12.260 に答える