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

如何删除使用会话管理bean作为数据资源的jsf页面中的信息?,jsf,jsf-1.2,scopes,Jsf,Jsf 1.2,Scopes,我有一个关于两个Javabean的问题,它们在faces-config.xml中声明,在JSF1.2中有两个不同的托管bean作用域。首先,我想解释一下我现在遇到的问题 我可以将一些信息从我的java系统导出到另一个系统中(我认为数据的细节及其具体的传输方式并不重要) 重要的是,在我看来,触发导出的JavaBean具有托管bean范围“会话”。数据导出在我的系统后台工作,需要此会话范围 用户可以在jsf/xhtml页面中看到一条信息,即导出已启动,下面是具体问题: <ui:repeat v

我有一个关于两个Javabean的问题,它们在faces-config.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-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是托管bean作用域“request”:


新计算
资源.计算
要求
行政区
#{adminArea}
这个bean需要托管bean作用域“request”

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

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

格里茨 Marwied

最终答案:

  • 转到JSF2.0。它描述了许多有用的特性
  • 如果要在特定页面上显示特定信息,请尝试使用视图范围。查看一下请求范围和视图范围之间的区别。尝试将用户界面直接链接到视图范围的bean。可通过ManagedProperty注入接收的所有会话或应用程序信息
  • 我建议您拒绝使用xml配置的bean,转而使用注释。你能读到的好评论
  • 关于JSF中的后台处理。这些事情通常由企业JavaBean(EJB)执行。看一看EJB3,也许吧

  • 这是用java代码实现的。您可以通过按下jsf页面上的命令按钮来触发它。在我的数据库中设置一个标志,另一个进程每30秒调用一次数据库并执行数据导出。如果设置了falg,用户将获得jsf页面上的信息,而这不会用java代码实现。。。我理解这一点,就像你创建一个新线程并在那里开始一些过程一样。我错了吗?线什么的都没有。对于这个jsf页面,我需要一个init方法或其他方法,它删除了jsf页面上用户的信息。首先,如果您想在特定页面上显示特定信息,请尝试使用视图范围。看一看请求范围和视图范围之间的区别。我还建议您拒绝使用xml配置的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>