2011-01-09 63 views
35

Estoy usando Primefaces para hacer mi aplicación un poco más bella. Me di cuenta de que p:commandButton y h:commandButton no funcionan de la misma manera.PrimeFaces CommandButton no navega ni actualiza

El p:commandButton llama al método y nada más se abre. El h:commandButton llama al método y devuelve una navegación.

Tengo problemas con la redirección después de presionar el botón de inicio de sesión al usar p:commandButton. ¿Cómo lidiar con eso?


que tienen un parámetro de actualización:

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

Respuesta

50

<p:commandButton> necesita uno de estos procedimientos para que funcione correctamente:

  • el atributo update a la lista Nº de de componentes que volver a hacer (para solicitudes AJAX)
  • el atributo ajax="false" para hacer un envío normal, sin ajax.

Si no tiene ninguno de los dos, el botón realiza una solicitud AJAX por defecto sin comentarios de UI.

Además, he tenido problemas con ninguna de las opciones de trabajo cuando el <h:form> que rodea tenía un atributo enctype.

+0

que tienen un parámetro de actualización. Consulte la pregunta actualizada – Sven

+1

. Quiere 'ajax =" false "' si desea tener una solicitud sincrónica con una navegación. En cuanto al parámetro 'update', vea mi comentario en [una de sus preguntas anteriores] (http://stackoverflow.com/questions/4605118/jsf2-exeptions-while-submiting-to-bean) que no respondió hasta ahora. – BalusC

+0

Sry, simplemente se olvidó de eso -.- – Sven

8

Debe usar el redireccionamiento si está navegando y la solicitud se realiza con ajax.

26

Creo que lo que era Cagatay ción:

¿El no navegar la página:

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

Works (redirige la página):

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

Obras (redirige la página)

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

si .xhtml es su Postfix por defecto definido en web.xml:

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

Más información se puede encontrar en el foro PrimeFaces, por ejemplo, en this discussion about navigation

espero que ayudó un poco ...

+0

¡Buena conclusión! – Sven

5

Tengo un problema similar.

estoy usando PrimeFaces y PrimeFaces móvil y la navegación en Firefox falla cuando se utiliza <p:commandButton> con ajax = "false" y action = "find.xhtml? Enfrenta el re-direccionamiento = true".

La única manera de que pudiera hacer que funcione también en Firefox era mediante el uso de <h:commandButton>:

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