p:commandLink won't redirect to new 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:
Disable ajax by
ajax="false"
attribute. It'll then fire a normal HTTP request.Update (re-render) the partial content (on the same page!) by
update="clientid"
attribute. You can userendered
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.
精彩评论