>我有和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 肯定会揭示问题。