【发布时间】:2016-04-23 14:39:38
【问题描述】:
我正在使用 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>
MyFileBacking.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没有被调用,关闭对话框后如何重定向到另一个页面?
【问题讨论】:
-
在您的 dialogReturn() 方法中,您可以直接返回 url,如 return "myDetails?faces-redirect=true";
-
我可以,但是对话框关闭时不会执行该方法。如果我在已关闭对话框的 selectedFileIdForDetails 中编写重定向代码,则重定向页面会在对话框中打开
-
你在
dialogReturn函数打印过日志吗?
标签: jsf jsf-2 primefaces dialog event-handling