2012-07-02 37 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。 –

相关问题