2011-01-09 13 views
35

Sto usando Primefaces per rendere la mia app un po 'più bella. Ho notato che p:commandButton e h:commandButton non funzionano allo stesso modo.CommandFutton PrimeFaces non naviga o aggiorna

Il p:commandButton chiama il metodo e nient'altro hapens. Il h:commandButton chiama il metodo e restituisce una navigazione.

Ho problemi con il reindirizzamento dopo aver premuto il pulsante di accesso quando si utilizza p:commandButton. Come affrontarlo?


ho un parametro aggiornamento:

<p:commandButton value="Login" action="#{login.login}" type="submit" update="msgs" /> 

risposta

50

<p:commandButton> necessita di una delle seguenti funzioni correttamente:

  • l'attributo update alla lista di id di componenti di ri-rendering (per richieste AJAX)
  • l'attributo ajax="false" per eseguire un invio normale, non ajax.

Se non si dispone di nessuno, il pulsante esegue per impostazione predefinita una richiesta AJAX senza feedback dell'interfaccia utente.

Inoltre, non ho riscontrato problemi con nessuna delle due opzioni quando il <h:form> circostante aveva un attributo enctype.

+0

ho un parametro di aggiornamento. Vedi domanda aggiornata – Sven

+1

Si desidera 'ajax =" false "' se si desidera avere una richiesta sincrona con una navigazione. Per quanto riguarda il parametro 'update', guarda il mio commento in [una delle tue domande precedenti] (http://stackoverflow.com/questions/4605118/jsf2-exeptions-while-submiting-to-bean) a cui non hai risposto per ancora. – BalusC

+0

Sry, ho appena dimenticato che -.- – Sven

8

È necessario utilizzare il reindirizzamento se si sta effettuando la navigazione e la richiesta viene eseguita con ajax.

26

Penso che quello che Cagatay mento era:

Does non navigare nella pagina:

<p:commandButton action="home.xhtml" value="Go Home"/> 

Works (reindirizza alla pagina):

<p:commandButton action="home.xhtml?faces-redirect=true" value="Go Home"/> 

Works (reindirizza alla pagina)

<p:commandButton action="home?faces-redirect=true" value="Go Home"/> 

se .xhtml è il vostro suffisso di default definito in web.xml:

<context-param> 
     <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
     <param-value>.xhtml</param-value> 
    </context-param> 

Maggiori informazioni si possono trovare nel forum primefaces, per esempio in this discussion about navigation

Spero che ci ha aiutato un po '...

+0

Bella conclusione! – Sven

5

Sto riscontrando un problema simile.

Sto usando primefaces e primefaces mobile e la navigazione non riesce in Firefox quando si utilizza <p:commandButton> con ajax = "false" e action = "find.xhtml? Facce-redirect = true".

L'unico modo ho potuto farlo funzionare anche in Firefox era utilizzando <h:commandButton>:

<h:commandButton value="#{msg.find}" process="find" 
        action="find.xhtml?faces-redirect=true" />