0

ゲッターとセッターが公開された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を返します。

私のオブザーバーが別の会話にいるようです。

同じユーザーセッションで複数の会話をアクティブにすることはできますか?

更新:ナビゲーションルールをリダイレクトに変更すると、コードは正しく機能します。

4

1 に答える 1

0

あなたが会話を始めなかったということはありえますか?次に、リクエストごとに新しい会話を取得します。会話を両方の Bean に注入し、その状態 / ID をデバッグすると、問題が明らかになるはずです。

于 2012-07-03T04:07:38.303 に答える