当前位置: 首页 > 知识库问答 >
问题:

在SessionScoped bean中注入SessionScoped列表

梁丘威
2023-03-14

我有两节课

@SessionScoped
public class Department {
    private List<Employee> employees;
    //Getters and setters
}

还有一个雇员类

@SessionScoped
public class Employee {
    private int id;
    private String name;
    //Getters and setters
}

在我的控制器中,我从服务层检索数据,并尝试填充部门。这就是我的控制器的样子。

public class MyController {
    @Inject
    private Department department;
}

过去,如果我使用new关键字为CDI管理的bean构造实例,我会遇到麻烦。我可以使用new创建一个ArrayList,使用new构造Employee实例,将它们添加到列表中,然后在departmentbean中设置列表。有人能告诉我在ManagedBean部门填充员工(ManagedBean)列表的正确方法是什么吗。请记住,需要应用范围界定。该范围也可以被@ViewAccessScope很好地定义

我的解决办法是

@SessionScoped
public class Department {

    @Produces
    @SessionScoped
    private List<Employee> employees = new ArrayList();

    public add(Employee e) {
        employees.add(e);
    }
    //Getters and setters

}

不太确定这是否是正确的方法,因为其他任何人输入员工列表都会得到此会话范围的ArrayList??

我想知道处理这种情况的正确方法

共有1个答案

公冶京
2023-03-14

表示DB的类,比如Department和Employee,没有范围。您只需要在bean中定义作用域,然后注入不同的模型(如管理器)。如果您需要关联不同型号的数据库,您可以使用不同的类型,如@OneToOne或@OneToMany等。。

 类似资料:
  • 我有一个有状态的会话作用域(CDI)EJB,它保存有关用户会话的信息。 现在,我想从一个 我从webapp直接访问EJB(使用注入)到我为JSF使用的bean中(它们也是CDI管理的bean)。 我面临的问题是,似乎与JSF bean处于不同的“会话范围”。创建了两个实例;一个从JSF实例化,另一个从HttpSessionListener实例化。 我尝试通过注入实例注入bean 这个bug报告建议

  • CDI bean: 当我现在访问无状态EJB(例如从servlet访问)时,我希望testMethod使用与调用方的HttpSession相关联的CDI bean。因此,如果来自不同Browser/HTTP会话的两个客户机访问Servlet,它们都将得到不同的结果字符串。 我是否需要CDI而不是?如果需要,我如何为给定会话生成正确的bean实例?我想过也许可以使用BeanManager并搜索Ses

  • 我有这个问题,我不确定这是否是“预期”行为,但我的问题是: 我有一个Http筛选器: UserInfo和ActivationInfo都是@SessionScope,如下所示: 和 当我尝试访问调用过滤器的页面时,我在控制台上看到以下内容: 如果我转到不同的浏览器并输入“坏”校验码,用户信息/激活信息永远不会重新注入。IE,与不同的会话,我没有看到一个新的UserInfo/ActivationInf

  • 我试图用jsf和CDI编写一个简单的登录表单。问题是当我注入我的SessionScoped bean时,它不像我期望的那样工作。这是我的豆子 这是我的控制器: 还有一个简单的Jsf表单,它调用login函数并显示LoginInfo类的计数器字段。 通过单击登录按钮和调试变量,我可以看到“lo”是这样的: lo={LoginInfo$Proxy$_$$_WeldClientProxy@16688}“

  • 问题是在达到会话超时之前不会销毁会话范围的bean。 因此,对于以下注销程序,我有两个问题: 这是使用shiro注销的正确方法吗(请参阅下面的logout()) 注销期间销毁CDI会话范围bean的正确方法是什么。 page.xhtml: null 豆类: shiro.ini: 例外情况: 调用时引发以下异常 附加信息:我正在运行WildFly8.2.0.final。 多谢了。

  • 我有一个@sessionscoped bean,一个带有@stateless注释和@inject the bean和@ejb我的EJB的Restful Jersey服务。 当我试图从浏览器的URL调用rest web服务时,服务会注入@inject UserBean。但是当我试图从@SessionScoped UserBean中的代码调用web服务时,它不会被注入。 豆子: 1: Login fr