我是一名使用JSF和Primefaces的开发者,我的问题是:
我有一个页面(page1.jsf),它会接收一个包含字符串列表的视图参数(以空格分隔):
或者这样:
我有一个页面(page1.jsf),它会接收一个包含字符串列表的视图参数(以空格分隔):
<f:metadata>
<f:viewParam name="list" value="#{bean1.list}" converter="listConverter"/>
</f:metadata>
listConverter将字符串转换为单词列表。如果我通过url访问页面(例如:page1.jsf?list=word1 word2 word3),一切正常!但是现在我正在尝试使用另一个页面(page2.jsf)来创建该术语列表。我正在使用Primeface DataTable,遵循此示例:http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf。我希望用户能够选择多行(Primeface示例中的复选框),然后按下按钮,将重定向到page1.jsf,并将所选项目列表作为参数传递(例如,使用Primeface展示示例,传递所选汽车型号的列表)。我正在尝试这样做:<p:commandButton action="page1?faces-redirect=true&includeViewParams=true" >
<f:attribute name="list" value="#{bean2.convertSelectedItemsToString()}" />
</p:commandButton>
或者这样:
<p:commandButton action="page1?faces-redirect=true&includeViewParams=true" >
<f:param name="list" value="#{bean2.convertSelectedItemsToString()}" />
</p:commandButton>
bean2中有一个selectedItems[]数组,其中包含所选对象。
不用说...它没有起作用。
需要帮助吗? 提前致谢。
bean2.convertSelectedItemsToString
已经是特定于视图的了,或者你正在做一些通用的东西吗?如果您需要通用解决方案,可以将页面作为参数传递。请参见更新的答案。 - Arjan Tijms