为什么两个具有会话范围的控制器无法看到对方?

时间:2012-07-02 19:56:08

标签: cdi

我有和CDI bean UserController注释为@ConversationScope,其属性名为user,暴露了getter和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。

就像我的观察者在不同的对话中一样。

我可以为同一个用户会话激活多个会话吗?

更新: 当我将导航规则更改为重定向时,代码可以正常工作。

1 个答案:

答案 0 :(得分:0)

难道你没有开始谈话吗?然后,您将获得每个请求的新会话。将对话注入两个bean并调试其状态/ id应该可以解决问题。