2011-07-14 31 views
0

私は状態クラスを持っています。私は2つの新しい状態オブジェクトをセッションスコープで2つのコントローラに注入する必要があります。 mycontrollerが作成されるたびに、オブジェクト化された状態をインスタンス化する必要があります。以下の構文を使用すると、両方のコントローラに同じ状態オブジェクトが注入されます。異なるコンテキスト変数に同じSeamクラスをバインドします

私はこれを考え出した

session.setAttribute("myFirstControllerState", myScreenStateObj1); 
session.setAttribute("mySecondControllerState", myScreenStateObj2); 


@SuppressWarnings("serial") 
@AutoCreate 
@Name("myScreenState") 
@Scope(ScopeType.SESSION) 

public class MyScreenState implements Serializable { 

} 

@AutoCreate 
@Name("myFirstScreenController") 
@Scope(ScopeType.PAGE) 
@SuppressWarnings("serial") 

public class MyFirstController implements Serializable { 
    @In(value="myScreenState") 
    @Out(value="myScreenState") 
    private MyScreenState myFirstControllerState; 
} 

@AutoCreate 
@Name("mySecondScreenController") 
@Scope(ScopeType.PAGE) 
@SuppressWarnings("serial") 

public class MySecondController implements Serializable { 

    @In(value="myScreenState") 
    @Out(value="myScreenState") 
    private MyScreenState mySecondControllerState; 
} 

答えて

0

と同等の何かをしたいです。 @Rolesアノテーションを状態クラスに追加します。コントローラで

@SuppressWarnings("serial") 
@AutoCreate 
@Name("myScreenState") 
@Scope(ScopeType.SESSION) 
@Roles({@Role(name="myState1", scope=ScopeType.PAGE), 
    @Role(name="myState2",scope=ScopeType.PAGE)}) 

public class MyScreenState implements Serializable { 

} 

だけ

private MyScreenState myState1; 
を使用
関連する問題