7

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.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"/>

Any ideas what I'm doing wrong?

Paolo Forgia
  • 6,572
  • 8
  • 46
  • 58

2 Answers2

16

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.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
4

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.

Cagatay Civici
  • 6,406
  • 1
  • 29
  • 34