2012-08-15 58 views
3

我试图在关闭primeface对话框后重定向到新页面。我已经尝试在对话框中使用ajax close事件来激发后台bean中的重定向。重定向到对话框中的新页面关闭

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

是否有任何其他方式可以在关闭对话框后将重定向放置到新页面?

回答

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); 
} 
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;" /> 

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

相关问题