我打算在关闭主要对话框后重定向到新页面。我已经尝试在对话框中使用ajax close事件来激活支持bean中的重定向。
<p:ajax event="close" listener="#{bean.goToStartPage}" />
关闭对话框后还有其他方法可以将重定向放到新页面吗?
答案 0 :(得分:3)
找到另一个解决方案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);
}
答案 1 :(得分:0)
您可以将JSF配置为对AJAX请求执行正确的重定向,但是如果您不希望以这种方式执行重定向,我会调用一个隐藏按钮,该按钮将触发整页回发到您的托管bean方法。 / p>
<p:ajax event="close" oncomplete="hiddenBtnWidget.jq.click()" />
...
<p:commandButton id="hiddenBtn" widgetVar="hiddenBudgetWidget" ajax="false"
actionListener="#{bean.goToStartPage}" style="display: none;" />
只要你的监听器正在执行重定向,那么这将重定向页面。