1

我有一个控制器和一个制片人。

@Named
@SessionScoped
public class UserController{

    private User user;

    //other methods

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

如果我将用户注入 Servlet,我总是得到相同的用户(我比较了对象 ID)——也在不同的会话中。如果我在 CDI Bean 中注入用户,它就可以工作并且我得到当前会话的用户。

4

1 回答 1

1

UserController是会话范围的,但生产者不是。即生产者有@Dependent作用域,所以User当servlet 初始化时bean 被注入一次。

尝试添加@SessionScoped到您的生产者方法。

于 2014-07-10T11:35:54.827 回答