2011-02-04 19 views
7

Sto utilizzando JSF2 e GlassFish, PrimeFaces 2.1.JSF PrimeFaces p: commandLink non reindirizzerà a una nuova pagina?

Questo funziona, il metodo showCreateProfile() viene colpito, e il metodo restituisce "profileForm" e il browser reindirizza a quella pagina:

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

Tuttavia, questo non funziona, il metodo showCreateProfile() ottenere successi e il metodo restituisce "profileForm" ma il browser non reindirizza alla pagina. Ho provato tre cose diverse senza fortuna:

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

Qualche idea su cosa sto facendo male?

Rob

risposta

13

I primefaces' p:commandLink incendi di default una richiesta AJAX. Non restituisce un'intera risposta HTTP, ma solo una risposta HTTP parziale che deve essere aggiornata nell'albero HTML DOM di JS.

Si sono fondamentalmente due opzioni:

  1. Disabilita ajax per attributo ajax="false". Quindi, genererà una richiesta HTTP normale.

  2. Aggiornamento (re-rendering) del contenuto parziale (nella stessa pagina!) Per l'attributo update="clientid". È possibile utilizzare l'attributo rendered per controllare il rendering del contenuto.

Se nessuno dei due funziona, il problema si trova altrove. Dato che il h:commandLink funziona e il metodo di azione di p:commandLink viene eseguito anche, può solo significare che non stai eseguendo il codice che pensi di eseguire mentre provi lo ajax="false". Verificare, salvare, ricostruire, ridistribuire, riavviare.

4

PrimeFaces non supporta le navigazioni in avanti, è necessario utilizzare il reindirizzamento anziché l'inoltro se si desidera navigare all'interno di una richiesta Ajax o impostare ajax su false come ha detto BalusC.

Problemi correlati