p:commandLink不会重定向到新页面?

时间:2011-02-04 16:42:14

标签: jsf primefaces glassfish

我正在使用JSF2和GlassFish,PrimeFaces 2.1。

这样可行,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"/>

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:15)

Primefaces'p:commandLink默认触发ajax请求。它不返回整个HTTP响应,而只返回部分HTTP响应,它必须由JS在HTML DOM树中更新。

您基本上有两种选择:

  1. ajax="false"属性禁用ajax。然后它将触发正常的HTTP请求。

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

  3. 如果两者都不起作用,那么问题就在于其他地方。由于h:commandLink的工作原理和p:commandLink的操作方法也会被执行,因此它只能意味着您在尝试ajax="false"时没有运行您认为正在运行的代码。验证,保存,重建,重新部署,重新启动。

答案 1 :(得分:4)

PrimeFaces不支持基于前向的导航,如果您想在ajax请求中导航或将ajax设置为false,则需要使用重定向而不是前向,如BalusC所说。