我有一个关于两个 java bean 的问题,它们在 faces-config.xml 中声明,并且在 JSF 1.2 中有两个不同的托管 bean-scopes。首先,我想解释一下我现在遇到的问题。
我可以将一些信息从我的 java 系统导出到另一个系统(我认为数据的详细信息及其具体的传输方式并不那么重要)。
在我看来,重要的是,触发该导出的 java bean 具有托管 bean 范围“会话”。数据导出在我的系统背景下工作,需要这个会话范围。
用户可以在 jsf / xhtml 页面中看到一条信息,即导出已启动,具体问题如下:
<ui:repeat value="#{adminArea.informationForExport}" var="info">
<h:outputText value="#{info}" />
</ui:repeat>
这个信息每次都是 HTML DOM 的一部分并且不会消失,如果用户在我的系统中观看另一个 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 范围“请求”:
<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“adminArea”的托管bean范围从“session”更改为“request”的唯一方法是什么?但这会导致问题,即我的数据导出在后台不起作用。
或者我可以用其他仪器解决这个问题吗?
格雷茨·马尔维德