2011-07-14 24 views
0

我有一個狀態類。我需要兩個新的狀態對象在會話範圍內注入兩個我的控制器。每當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; 
相關問題