我正在使用Primefaces 3.0。我有一个带selectionMode单的数据表,如下所示:
<p:dataTable id="paySumm" var="PSummRow"
value="#{beanPySummary.PySummariesModel}"
selection="#{beanPySummary.selectedPySummary}" selectionMode="single" paginator="true"
rows="15" paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink}
{CurrentPageReport} {NextPageLink}" rowsPerPageTemplate="10,15,25,35" >
<p:ajax event="rowSelect" listener="#{beanPySummary.onRowSelect}" />
我在方法onRowSelect中有一些业务逻辑,然后我导航到另一个页面。
public String onRowSelect(SelectEvent event) {
......
ConfigurableNavigationHandler configurableNavigationHandler =
getCurrentInstance().getApplication().getNavigationHandler();
configurableNavigationHandler.performNavigation("MoreDetail?faces-redirect=true
return "";
我想通过includeViewParam将一些数据作为参数传递给MoreDeatils。我可以在MoreDeatils.xhtml中将它们定义为f:ViewParam。我不确定是否需要使用ManagedProperty注释,同时将这些参数定义为我的数据表页面上的隐藏字段。在这里,我需要建议和指示。
谢谢, 彼得
答案 0 :(得分:1)
您只需按ExternalContext#redirect()
发送重定向即可。您要发送的数据需要在URL的查询字符串中设置。
public void onRowSelect(SelectEvent event) throws IOException {
String field1 = URLEncoder.encode(this.field1, "UTF-8");
String field2 = URLEncoder.encode(this.field2, "UTF-8");
String field3 = URLEncoder.encode(this.field3, "UTF-8");
String url = "MoreDetail.xhtml?field1=" + field1 + "&field2=" + field2 + "&field3=" + field3;
FacesContext.getCurrentInstance().getExternalContext().redirect(url);
}
请注意,(ajax)动作侦听器方法应该返回void
。