ゲッターとセッターが公開されたuserという名前の属性を持つ@ConversationScopeとして注釈が付けられたCDIBeanUserControllerがあります。
@ConversationScoped
@Named("userController")
public class UserController implements Serializable {
private User user;
@PostConstruct
public void init() {
this.user = new User();
}
//getters and setters ommited...
}
オブザーバーと一緒に2番目のクラスもあります。
@ConversationScoped
public class UserObservers implements Serializable {
@Inject private UserController controller;
public void createObserver(@Observes @MyQualifier MyEvent event) {
this.controller.getUser().setName("Test Name");
}
}
ユーザープロパティがインターフェイスに入力されており、オブザーバーにユーザーの名前を変更してもらいたいのですが、ユーザープロパティは常にnullを返します。
私のオブザーバーが別の会話にいるようです。
同じユーザーセッションで複数の会話をアクティブにすることはできますか?
更新:ナビゲーションルールをリダイレクトに変更すると、コードは正しく機能します。