JSF将所选项目传递给第二个视图

时间:2017-04-24 16:31:55

标签: jsf

我有以下按钮

<p:button 
    onclick='javascript:Open_2_Windows_SideBy_Side("#{bean.id}", "#{bean.title}"); return false;' value="View Item">
</p:button>

javascript基本上打开了两个浏览器窗口,一个是帮助页面,其中包含有关如何与第二个窗口交互的说明,这是使用item.id从外部应用程序通过GET检索的项目的详细信息

在帮助窗口中,我只使用#{param.title},但现在我想使用更多项属性。我不想发送更多网址参数。

我试过

    <p:commandButton 
         onclick='javascript:Open_2_Windows_SideBy_Side("#{bean.id}", "#{bean.title}"); 
         return false;' value="View Item">
        <f:setPropertyActionListener value="#{item}" target="#{helpView.selectedItem}" />
    </p:commandButton>

然后在help.xhtml中我把

  #{helpView.selectedItem.title}"

但是,从不在helpView支持bean中设置selectedItem属性。

有没有办法将所选项目从第一个视图设置为帮助视图,或者我是否需要使用o:viewParam和转换器设置的ID设置在helpView中重新查询该项目?

我的想法是,当我得到一个项目列表而不必重新查询数据库时,我已经在第一个视图中对数据库进行了查询。

1 个答案:

答案 0 :(得分:0)

在隐藏输入中创建一个包含所需值的表单,并将它们绑定到helpview支持bean,并在打开帮助窗口后提交表单。这样你就不必将它们作为params和url的一部分传递给它们。您将在提交后在helpview bean中分配值,而无需使用params。有关提交示例,请参阅How to submit form to new window?