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

时间:2013-11-27 07:24:20

标签: jsf jsf-1.2 scopes

我有一个关于两个java bean的问题,它们在faces-config.xml中声明,并且在JSF 1.2中有两个不同的managed-bean-scope。首先,我想解释一下我现在遇到的问题。

我有可能将我的java系统中的一些信息导出到另一个系统中(我认为数据的详细信息及其混凝土传输方式并不那么重要)。

在我看来,重要的是,触发该导出的java bean具有托管bean范围“session”。数据导出在我的系统背景下工作,需要此会话范围。

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

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

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

My Bean“adminArea”在faces-config.xml中使用托管bean范围“session”声明,并实现了数据导出的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范围“请求”:

<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范围“request”。

是将bean“adminArea”的托管bean范围从“session”更改为“request”的唯一方法吗?但这导致了问题,我的数据导出在后台不起作用。

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

格尔茨 Marwied

1 个答案:

答案 0 :(得分:1)

最终答案:

  1. 转到JSF 2.0。它有许多有用的功能here
  2. 如果要在特定页面上显示特定信息,请尝试使用视图范围。查看here以查看请求和视图范围之间的区别。尝试直接将用户界面与视图范围的bean链接。您可以通过ManagedProperty注入接收的所有会话或应用程序信息。
  3. 我建议您拒绝xml配置的bean并转移到注释。关于你的好评如你可以阅读here
  4. 关于JSF中的后台处理。这些东西通常由Enterprise Java Beans(EJB)执行。看看EJB 3,也许Timer Service