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

获取具有其他名称的会话作用域bean的新实例

艾鹭洋
2023-03-14

我有一个会话范围的bean,用于UI编辑一些数据。它用@Named和@SessionScoped进行注释,所有运行都在JBoss6.2中。现在我需要一个几乎相似的编辑UI。问题是这两个UI可以并行存在。因此,为了实现完美的重用,最好使用另一个名称创建bean的新实例。不幸的是,我不知道如何以一种干净的CDI方式来实现这一点。我不太喜欢从bean继承并给它起另一个名字。这是我的想法之一。另一个想法是只在托管bean中实现业务逻辑,并将数据封装在其中,并在特定上下文中需要时在托管bean中设置数据对象。但也许还有另一种CDI方式与制片人或其他什么?在我的例子中,将bean的作用域更改为ViewScope毫无意义。

谢谢你,奥利弗

共有1个答案

宿嘉庆
2023-03-14

但也许还有另一种CDI方式与制片人或其他什么

事实上,你可以找个制作人。

启动示例:

@SessionScoped
public class SessionBean {

    @Produces
    @Named("foo")
    @SessionScoped
    public SessionBean getAsFoo() {
        return new SessionBean();
    }

    @Produces
    @Named("bar")
    @SessionScoped
    public SessionBean getAsBar() {
        return new SessionBean();
    }

    // ...
}

(方法名称可自由选择)

使用方法:

@Inject
@Named("foo")
private SessionBean foo;
@Inject
@Named("bar")
private SessionBean bar;
 类似资料:
  • 有没有办法销毁特定类的所有创建的会话范围bean(并在需要时让spring重新创建)? 例如,两个用户访问应用程序,然后每个用户将有一个bean。我想毁掉这两颗豆子。 用例: 管理员正在更新菜单栏。菜单栏列表数据存储在会话范围的bean中。管理员的bean应该被销毁,菜单栏应该被更新。当然,其他人的菜单也应该更新,所以其他bean也应该被销毁。 注1:不同的用户可能会看到不同的菜单,因此bean是

  • 我有一个springbean和scope会话。这个bean持有对另一个不可序列化的单例bean的引用。如果我想序列化会话范围的bean,最好的方法是什么? 这里已经提出了同样的问题:Spring会话范围的bean(控制器)和对服务的引用,在序列化方面 公认的答案是: 这个问题在Spring 3.0中通过提供一个非序列化bean的代理来解决,该代理从当前应用程序上下文中获取实例 据我所知,链接视频中

  • MyCart.java 这个MyCart Bean是每个HTTP会话实例化的名为CDI的Bean。 抽象类 问题描述 仅用于理解会话范围的CDI。我有两个JSP文件,如下所示 SetCDIBeanValue.jsp其中,我将获得命名会话CDI Bean(MyCart)的实例将It String属性的值设置为String值FROM_FIRST_JSP 因为这个会话的作用域是有限的,所以我想应该只有一

  • 如果我在一个会话中有值,并且我需要获取会话中的所有值,如 如果我将一组复选框值转换为字符串。Im 将.jsp中选择的所有值设置为会话对象。我只需要检索保存在上述代码中的jsp中的选定值。

  • 本文向大家介绍Java获取具有其(完全限定的)名称的类,包括了Java获取具有其(完全限定的)名称的类的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个String包含类名的Class对象,可以使用Class.forName以下对象访问它的对象: Java SE 1.2 可以指定是否初始化类(的第二个参数forName)以及ClassLoader应该使用哪个类(第三个参数):

  • 我有一个会话作用域bean,它使用代理注入到单例bean中。 从单例bean中,我需要调用会话作用域bean的某个初始化方法,它需要单例bean作为参数。此外,我不能改变会话范围bean的来源。 为了详细说明这个情况: 单例bean是一个服务,会话范围bean是一个Vaadin4Spring事件总线,为此我需要调用方法。 似乎没有办法检查,如果我已经订阅,并且我不能在某个实例上两次调用订阅。 有没