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

使用来自同一个类、不同范围的许多bean

颜熙云
2023-03-14

我想使用ManagedBean类Users。java,创建两个具有不同作用域的bean实例。我尝试了两种方法:

1.为用户使用ManagedBean和SessionScope注释(这将创建一个带有会话范围的用户),并在faces-config.xml声明另一个来自用户的MenagedBean,带有请求范围。

@ManagedBean
@Component
@SessionScoped
public class Users implements Serializable {...} 

注意:“组件”来自Spring框架,暂时可以忽略。

在faces-config.xml:

<managed-bean>
    <managed-bean-name>newUser</managed-bean-name>
    <managed-bean-class>ro.telacad.model.Users</managed-bean-class>   
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

在登录页面中,我使用“#{用户。}”在里面。在这种情况下,登录工作正常(使用Spring Security)。我还创建了一个“注册”页面,在那里,我需要带有请求范围的“用户”bean来在数据库中创建一个新用户,“#{newUser。}”。我在一个方法中放置了一个断点,当应用程序停在那里时,这个对象的所有属性都是空的,应用程序会抛出一个NullPointerExcure。

2.从用户中删除注释“ManagedBean”和“SessionScope”。java,并在faces配置中声明2个托管bean。xml:

<managed-bean>
    <managed-bean-name>currentUser</managed-bean-name>
    <managed-bean-class>ro.telacad.model.Users</managed-bean-class>   
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
    <managed-bean-name>newUser</managed-bean-name>
    <managed-bean-class>ro.telacad.model.Users</managed-bean-class>   
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

当然,这一次我在登录页面和欢迎页面“#{当前用户”中使用。}”。这一次,在这两种情况下都会抛出NullPointerExcture(登录并注册)。

该文件面向配置。xml已加载。我通过创建一个类TempBean来测试这一点。java,具有1个属性和1个方法,在faces配置中声明此类的托管bean。并以h:form形式使用它。成功了。

共有1个答案

司寇正志
2023-03-14

我扩展了“用户”类,就像塞隆在评论中说的那样。它工作正常。但我认为在真正的应用程序中这样做不是一个好主意,但目前我没有更好的主意。

 类似资料:
  • 如何修改此ffmpeg字符串以生成具有不同视频比特率的多个输出?这是为了在yadif=1消耗大量电力时节省时间。而且,无法让它在windows中接受yadif_cuda。 ffmpeg-y-f lavfi-i anullsrc=cl=mono:sample_rate=48000-i“test.mxf”-vf yadif=1-s 1920:1080-c:v h264-nvenc-强制关键帧“expr

  • 问题内容: 当要依赖的测试与具有此批注的测试属于同一类时,批注的属性可以正常工作。但是,如果要测试的方法和依赖的方法位于不同的类中,则该方法不起作用。示例如下: 有什么办法可以解决这个限制?一种简单的解决方法是在该调用中创建测试。但这将是过多的重复。 问题答案: 将方法放在中并使用。 建议验证*中的配置,并在该处出现问题时抛出错误,以使测试无法运行。这样,测试可以只关注测试。

  • 问题内容: 我有大约5个表,其中的公用字段为“ serid”。我想在所有这些表中计算不同的用户ID。某些用户ID可能出现在这些表中的大约2个中。但是我想将5个表中不同用户ID的UNION数在一起。我可以用ff代码在一张表中计算不同的用户ID。我希望能够从所有表中计数。 问题答案: 用一个 与相比,标准将从结果集中删除重复的值。您的陈述看起来像 从w3schools 默认情况下,UNION运算符仅选

  • 我正在JDeveloper 11.1.1.4中开发一个JAX-WS Web服务,它应该使用以前部署到WebLogic服务器的JAR中的EJB。WebService项目和EJB项目都是我自己的代码,但我想分别部署它们。现在我正在试验这种设置。 在Examplejb项目中,我有一个实现远程接口示例的bean ExampleBean。 在该项目中,我有两个部署描述符(ejb-jar.xml和weblog

  • 我想把一个模型对象映射到dto模型。我已经有一个对象的映射器。我如何在另一个类中的另一个映射器中重用这个映射器? 我有下面的模型 这是我的地图 我希望将History映射到HistoryDynamo并重用IdentifierMapper映射HistoryDynamo中的一个对象。如何在ToHistoryDynamo中使用toIdentifierDynamo?