我正在使用PrimeFaces 5.2。场景:
- 打开对话框以查看列表 在
- 对话框中,在末尾显示操作列
- 关闭对话框
- 重定向到列中的选定操作页面。
1、2、3 正在工作。
我已经尝试了很多事情,但是关闭它后重定向不起作用。 在我调用重定向代码的地方没有调用dialogReturn
方法。
在这里,我成功地在MyFile.xhtml中加载了一个对话框。
<p:commandLink action="#{userDashboardBacking.showPriorityMyView()}"
class="myClass"
value="#{userDashboardBacking.priorityFilesLabel1} (#{userDashboardBacking.priorityFilesCount1})">
<p:ajax event="dialogReturn" update="@form" listener="#{userDashboardBacking.dialogReturn()}" />
</p:commandLink>
我的文件支持.java
// this always get me to the required dialog/page
public void showPriorityMyView(){
Map<String, Object> options = new HashMap<String, Object>();
options.put("modal", true);
options.put("closable", true);
options.put("draggable", true);
options.put("resizable", true);
options.put("contentHeight", "500");
options.put("contentWidth", "1100");
RequestContext.getCurrentInstance().openDialog("priorityMyView", options, null);
}
// this method is never called.
public void dialogReturn(){
FacesContext facesContext = FacesContext.getCurrentInstance();
String outcome = "/myDetails.jsf?faces-redirect=true";
facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null,outcome );
}
MyDetailDlg.xhtml
<p:column width="10">
<h:commandLink update="@form" action="#{myViewDlgBacking.selectedFileIdForDetails(row.fileId)}" title="View Details" immediate="true"
styleClass="ui-icon ui-icon-search" />
</p:column>
MyViewDlgBacking.java
// successfully closes the dialogue.
public void selectedFileIdForDetails(Long itemId){
RequestContext.getCurrentInstance().closeDialog(0);
}
为什么没有调用dialogReturn
,关闭对话框后如何重定向到另一个页面?
更改为不带 '()' 的 java 方法
<p:ajax event="dialogReturn" update="@form" listener="#{userDashboardBacking.dialogReturn}" />
并将选择事件作为输入参数添加到您的方法
public void dialogReturn(SelectEvent event){
Long selectedId = (Long) event.getObject();
}