开发者

p:commandLink won't redirect to new page?

开发者 https://www.devze.com 2023-02-09 03:25 出处:网络
I\'m using JSF2 and GlassFish, PrimeFaces 2.1. This works, showCreateProfile() method gets hit, and the method returns \"profileForm\" and the browser redirects to that page:

I'm using JSF2 and GlassFish, PrimeFaces 2.1.

This works, showCreateProfile() method gets hit, and the method returns "profileForm" and the browser redirects to that page:

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

However, this doesn't work, showCreateProfile() method get hits, and the method returns "profileForm" but the browser does not redirect to the page. I tried three different things with no luck:

<p:commandLink action="#{profileHandler.showC开发者_如何学CreateProfile}" 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"/>

Any ideas what I'm doing wrong?


The Primefaces' p:commandLink fires by default an ajax request. It does not return a whole HTTP response, but only a partial HTTP response which has got to be updated in HTML DOM tree by JS.

You have basically two options:

  1. Disable ajax by ajax="false" attribute. It'll then fire a normal HTTP request.

  2. Update (re-render) the partial content (on the same page!) by update="clientid" attribute. You can use rendered attribute to control the rendering of content.

If neither works, then the problem lies somewhere else. Since the h:commandLink works and the action method of p:commandLink also get executed, then it can only mean that you're not running the code you think you're running while trying the ajax="false". Verify, save, rebuild, redeploy, restart.


PrimeFaces does not support forward based navigations, You need to use redirect instead of forward if you want to navigate within a ajax request or set ajax to false as BalusC said.

0

精彩评论

暂无评论...
验证码 换一张
取 消