我目前正在使用两个JSF1.1页面。其中一个是viewDevices.jsp,另一个是vewDevicesPrint.jsp。它们都在view作用域下运行(也就是使用tomahawk存储)。在viewDevices中,它有一个img,用户可以点击转到viewDevicesPrint.jsp。如下所示:
<img src="redesign/images/printicon2.png" alt="print records" border="0" width="16" height="16" onClick="javascript:window.open('/viewDevicesPrint.jsf','_blank','height=500,width=900,menubar=yes, toolbar=yes,scrollbars=yes')"/>单击此img时,我希望将viewDevicesBean的当前实例传递给viewDevicesPrintBean。有没有办法做到这一点?
我在faces-config.xml中有以下内容。在调试过程中,viewDevicesPrintBean将获取viewDevicesBean的新实例,而不是当前实例。
<managed-bean>
<managed-bean-name>viewDevicesPrintBean</managed-bean-name>
<managed-bean-class>com.arch.myaccount.jsf.ViewDevicesPrintBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>param_viewDevicesBean</property-name>
<value>#{viewDevicesBean}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>viewDevicesBean</managed-bean-name>
<managed-bean-class>com.arch.myaccount.jsf.ViewDevicesBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>param_flow</property-name>
<value>#{param.Flow}</value>
</managed-property>
</managed-bean>发布于 2013-08-22 20:06:23
视图范围内的bean被绑定到当前视图。当您通过导航到不同的视图来更改当前视图时,该不同的视图将获得视图作用域bean的全新实例。注意,它在JSF2中也是这样工作的。
最好的方法是将所需的数据作为请求参数传递到window.open() URL中(转义它们!),这样打印bean就可以将它们作为请求参数(通过托管属性或ExternalContext)获取。另一种方法是将bean实例存储在会话作用域中的唯一且自动生成的键(例如java.util.UUID)下,并将该键作为请求参数传递,以便与打印页面相关联的bean可以通过该键从会话作用域获取数据。
https://stackoverflow.com/questions/18371274
复制相似问题