3

关闭primeface对话框后,我正在尝试重定向到新页面。我已经尝试在对话框中使用 ajax 关闭事件来触发支持 bean 中的重定向。

<p:ajax event="close" listener="#{bean.goToStartPage}" />

关闭对话框后还有其他方法可以将重定向放置到新页面吗?

4

2 回答 2

3

此处找到的另一个解决方案是在 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);
}
于 2012-08-15T12:29:36.607 回答
0

您可以将 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;" />

只要您的侦听器正在执行重定向,那么这将重定向页面。

于 2012-08-15T11:30:35.870 回答