我有一个带有制作人的 Controller 。
@Named
@SessionScoped
public class UserController{
private User user;
//other methods
@Produces
@User
public User produceUser() {
return user;
}
}
如果我将用户注入(inject)到 Servlet 中,我总是会得到相同的用户(我比较了对象 ID)——也在不同的 session 中。如果我将用户注入(inject)到 CDI Bean 中,它就会正常工作,并且我会获取当前 session 的用户。
最佳答案
UserController
是 session 范围的,但生产者不是。 IE。生产者具有 @Dependent
作用域,因此 User
bean 在 servlet 初始化时被注入(inject)一次。
尝试将 @SessionScoped
添加到您的生产者方法中。
关于java - CDI 注入(inject) Servlet 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24647516/