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

如何删除使用会话管理bean作为数据资源的jsf页面中的信息?

裴展
2023-03-14

我有一个关于两个JavaBean的问题,这是在faces配置中声明的。xml和JSF1.2中有两个不同的托管bean作用域。首先,我想解释一下我现在遇到的问题。

我可以将一些信息从我的java系统导出到另一个系统中(我认为数据的细节及其具体的传输方式并不重要)。

重要的是,在我看来,触发导出的JavaBean具有托管bean范围“会话”。数据导出在我的系统后台工作,需要此会话范围。

用户可以在jsf/xhtml页面中看到一条信息,即导出已启动,下面是具体问题:

<ui:repeat value="#{adminArea.informationForExport}" var="info">
    <h:outputText value="#{info}" />
</ui:repeat>

该信息每次都是HTMLDOM的一部分,并且不会消失,如果用户在我的系统中观看另一个xhtml页面并返回到该xhtml页面,他就可以开始数据导出。

我的Bean“adminArea”是在faces配置中声明的。xml与托管bean作用域“会话”,并实现了数据导出的java代码:

<managed-bean>
    <managed-bean-name>adminArea</managed-bean-name>
    <managed-bean-class>resources.adminArea</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

声明的bean“adminArea”在bean“newCalculation”中被称为托管属性,该bean是托管bean作用域“request”:

<managed-bean>
    <managed-bean-name>newCalculation</managed-bean-name>
    <managed-bean-class>resources.calculation</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>        
    <managed-property>
        <property-name>adminArea</property-name>
        <value>#{adminArea}</value>
    </managed-property>     
</managed-bean>

这个bean需要托管bean范围“请求”。

将bean的管理bean范围从会话更改为请求的唯一方法是什么?但这导致了问题,我的数据导出在后台不工作。

或者我可以用其他仪器解决这个问题?

格里兹·马维德

共有1个答案

郎玮
2023-03-14

最后答覆:

  1. 转到JSF2.0。这里描述了它的许多有用特性
  2. 如果要在特定页面上显示特定信息,请尝试使用视图范围。看看这里,看看请求作用域和视图作用域之间的区别。尝试将用户界面直接链接到视图范围的bean。可通过ManagedProperty注入接收的所有会话或应用程序信息
  3. 我建议您拒绝使用xml配置的bean,转而使用注释。你可以在这里读到关于这个的好评论
  4. 关于JSF中的后台处理。这些事情通常由企业JavaBean(EJB)执行。看看EJB3,也许还有计时器服务
 类似资料:
  • 我在解决如何正确处理JSF中会话的自动销毁方面遇到了困难。当然,此时,容器会使会话失效,从而也会在会话范围的bean上调用@PreDestroy方法。 在某些会话范围bean的预销毁中,我们正在注销一些侦听器,如下所示: 然而,getWS()方法实际上试图获取对另一个会话范围bean的引用,但失败了,如返回null。Ryan Lubke认为,后者似乎是正常的JSF行为: 我们遵守这里的规范。我不确

  • 我有一个CDI bean,定义如下: 现在,我想以编程方式将其从会话范围中删除: 但是变量始终为空。如何检索实例并销毁它?

  • 我有一些cdibean。以前,它们都是JSF管理的bean(从JSF管理的bean更改为CDI管理的bean)。 我像下面这样做是为了删除用户成功下在线订单后管理的一些会话范围的JSF。 以便在订单处理完成后将所有内容设置为默认值。这与在订单处理成功终止后不能注销用户的整个HTTP会话的销毁/无效无关。 与JSF托管bean不同,CDIBean通过一些CDI管理器实现(如Weld)存储到服务器内存

  • 恐怕这个问题会有点模糊,但这是... 我们注意到我们的JEE7 web应用程序中存在一些非常奇怪的、偶然的行为。有时,用户页面会突然开始显示来自完全不同用户会话的数据!到目前为止,我还没有能够复制这种现象,也没有在日志中找到任何问题的迹象,但是似乎一个用户的页面开始显示存储在@SessionScoped CDIBean中的数据,该CDIBean应该属于另一个用户的会话。 这种行为对任何人都有影响吗

  • 问题内容: 我正在使用框架JSF 2.1,Spring 3.1.1.Release,Hibernate 3.2.1进行Java EE项目。现在我正处于整合这三个方面的阶段。构建成功,我使用了tomcat服务器7。但是我在首页上看到了这个异常。 hibernatehibernate.cfg.xml hibernate.reveng.xml AnneeDao.java AnneeHibernateDa

  • 我已经按照帖子的说明选择了多行 这是我的代码:申请者earch.xhtml 应用程序搜索支持。Java语言 }