为什么两个具有对话范围的控制器看不到对方



>我有和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");
    }
}
user 属性

在我的界面中填写,我希望我的观察者更改用户的名称,但 user 属性始终返回 null。

就像我的观察者位于不同的对话中。

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

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

难道你没有开始对话吗?然后,您将获得每个请求的新对话。将会话注入到两个 bean 中并调试其状态/id 肯定会揭示问题。

最新更新