java - CDI 注入(inject) Servlet 不起作用

标签 java servlets cdi session-scope producer

我有一个带有制作人的 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/

相关文章:

java - 意外的输出...这个输出无论如何都不是我所期望的。这是什么

servlets - Servlet 3.0 异步支持不起作用

java - Tomcat 的 Cookie 是如何工作的?

java - 同一 session 中 Sessionscoped Bean 的多个实例

java - Weld 忽略生产者

java - 当用户按下按钮时,如何在 Android 中创建名为 "My Folder"的文件夹?

java - 如何用JAVA制作类(class)列表

java - 在 Netbeans 平台中添加 Alt + F7 作为操作的快捷方式

java - 运行Servlet时出现异常: java. lang.ClassNotFoundException : javax. servlet.http.HttpServletRequest

java - 焊接-001408 : Unsatisfied dependencies for type UserService with qualifiers @Default at injection point [BackedAnnotatedField] @Inject