我試圖在關閉primeface對話框後重定向到新頁面。我已經嘗試在對話框中使用ajax close事件來激發後臺bean中的重定向。重定向到對話框中的新頁面關閉
<p:ajax event="close" listener="#{bean.goToStartPage}" />
是否有任何其他方式可以在關閉對話框後將重定向放置到新頁面?
我試圖在關閉primeface對話框後重定向到新頁面。我已經嘗試在對話框中使用ajax close事件來激發後臺bean中的重定向。重定向到對話框中的新頁面關閉
<p:ajax event="close" listener="#{bean.goToStartPage}" />
是否有任何其他方式可以在關閉對話框後將重定向放置到新頁面?
發現另一個解決方案here將重定向Bean方法中的ExternalContext。這將重定向頁面,不管它是否是Ajax。
FacesContext ctx = FacesContext.getCurrentInstance();
ExternalContext extContext = ctx.getExternalContext();
String url = extContext.encodeActionURL(ctx.getApplication().getViewHandler().getActionURL(ctx, "/start.xhtml"));
try {
extContext.redirect(url);
} catch (IOException ioe) {
throw new FacesException(ioe);
}
您可以將JSF配置爲對AJAX請求進行適當的重定向,但是如果您不希望以這種方式執行重定向,則會調用隱藏按鈕,該按鈕將觸發整個頁面回發到託管bean方法。
<p:ajax event="close" oncomplete="hiddenBtnWidget.jq.click()" />
...
<p:commandButton id="hiddenBtn" widgetVar="hiddenBudgetWidget" ajax="false"
actionListener="#{bean.goToStartPage}" style="display: none;" />
只要您的偵聽器正在執行重定向,那麼這將重定向頁面。