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.
精彩评论