2011-02-04 88 views
7

我正在使用JSF2和GlassFish,PrimeFaces 2.1。JSF PrimeFaces p:commandLink不会重定向到新页面?

这工作,showCreateProfile()方法被击中,并且该方法返回“profileForm”,浏览器重定向到该页面:

<h:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" /> 

然而,这不起作用,showCreateProfile()方法来获取点击,并且该方法返回“profileForm”,但浏览器不会重定向到页面。我尝试了三件不同的事情,没有运气:

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" /> 

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" /> 

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" immediate="true"/> 

任何想法我做错了什么?

罗布

回答

13

的Primefaces' p:commandLink火灾默认Ajax请求。它不会返回一个完整的HTTP响应,而只会返回一个部分HTTP响应,它必须由JS在HTML DOM树中进行更新。

您有两种基本选择:

  1. 通过ajax="false"属性禁用阿贾克斯。然后它会触发一个正常的HTTP请求。

  2. 通过update="clientid"属性更新(重新呈现)部分内容(在同一页上!)。您可以使用rendered属性来控制内容的呈现。

如果两者都不起作用,那么问题就出在别的地方。由于h:commandLink作品和p:commandLink也得到执行的操作方法,那么它只能说明你没有运行,你认为你在试图将ajax="false"运行的代码。验证,保存,重建,重新部署,重新启动。

4

PrimeFaces不支持了基于导航,您需要使用,如果你想一个Ajax请求或AJAX设置为false作为BalusC说中导航重定向,而不是向前。