2012-07-02 28 views
0

我有和CDI bean的UserController註釋爲@ConversationScope與一個屬性名爲用戶暴露的getters和setter。爲什麼兩個會話範圍的控制器不能互相看到?

@ConversationScoped 
@Named("userController") 
public class UserController implements Serializable { 

    private User user; 

    @PostConstruct 
    public void init() { 
     this.user = new User(); 
    } 

    //getters and setters ommited... 

} 

我也有我的觀察員的第二課。

@ConversationScoped 
public class UserObservers implements Serializable { 

    @Inject private UserController controller; 

    public void createObserver(@Observes @MyQualifier MyEvent event) { 

     this.controller.getUser().setName("Test Name"); 

    } 
} 

的用戶屬性填充我的界面,我想我的觀察來改變用戶的名稱,但用戶屬性總是返回null。

它就像我的觀察者位於不同的談話。

我可以爲同一用戶會話激活多個對話嗎?

更新: 當我將導航規則更改爲重定向時,代碼正常工作。

+0

你能用初始化用戶的代碼更新你的問題嗎? –

回答

0

難道你沒有開始談話?然後你會爲每個請求獲得一個新的對話。將對話注入到兩個bean中並調試其狀態/ ID應該肯定會揭示問題。

+0

我做到了。 conversation.isTransient()返回false,conversation.getId()返回我的對話的確切ID。 –

相關問題