1

プロデューサー付きのコントローラーがあります。

@Named
@SessionScoped
public class UserController{

    private User user;

    //other methods

    @Produces
    @User
    public User produceUser() {
        return user;
    }
}

ユーザーをサーブレットに挿入すると、常に同じユーザーを取得します(オブジェクトIDを比較しました)-異なるセッションでも。ユーザーを CDI Bean に注入すると、それは機能し、現在のセッションのユーザーを取得します。

4

1 に答える 1

1

UserControllerセッションスコープですが、プロデューサーはそうではありません。つまり、プロデューサーには@Dependentスコープがあるため、UserBean はサーブレットの初期化時に 1 回注入されます。

@SessionScopedプロデューサー メソッドに追加してみてください。

于 2014-07-10T11:35:54.827 に答える