首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将t:savestate bean传递给另一个bean

将t:savestate bean传递给另一个bean
EN

Stack Overflow用户
提问于 2013-08-22 11:38:33
回答 1查看 142关注 0票数 0

我目前正在使用两个JSF1.1页面。其中一个是viewDevices.jsp,另一个是vewDevicesPrint.jsp。它们都在view作用域下运行(也就是使用tomahawk存储)。在viewDevices中,它有一个img,用户可以点击转到viewDevicesPrint.jsp。如下所示:

代码语言:javascript
复制
<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的新实例,而不是当前实例。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2013-08-22 20:06:23

视图范围内的bean被绑定到当前视图。当您通过导航到不同的视图来更改当前视图时,该不同的视图将获得视图作用域bean的全新实例。注意,它在JSF2中也是这样工作的。

最好的方法是将所需的数据作为请求参数传递到window.open() URL中(转义它们!),这样打印bean就可以将它们作为请求参数(通过托管属性或ExternalContext)获取。另一种方法是将bean实例存储在会话作用域中的唯一且自动生成的键(例如java.util.UUID)下,并将该键作为请求参数传递,以便与打印页面相关联的bean可以通过该键从会话作用域获取数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18371274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档