2011-08-09 12 views
5

Necesito evitar el doble POST en la actualización. Así que estoy usando el patrón POST/Redirect/GET (faces-redirect=true) y el controlador de navegación (por @BalusC) como en this post. ¿Cómo usar ese patrón en JSF 2.0 cuando el método de acción devuelve null (permanezca en la misma página)? ¿Es posible o necesito usar algo diferente de POST/Redirect/GET? Necesito mantener vivo un bean con vista, por lo que volver al método de acción en la misma vista (PRG funciona) no es una solución (se pierde view scope).JSF 2.0: POST/Redirigir/GET patrón cuando el método de acción devuelve nulo (permanezca en la misma página)

vista test.xhtml:

<h:commandButton action="#{bean.send}"/> 

frijol:

@ManagedBean 
@ViewScoped 
class Bean { 
    String send() { 
     // do something... 
     return null; 
    } 

    String send2() { 
     // do something... 
     return "test"; // view scope lost 
    } 
} 
+0

Hola, ¿podrías dar un ejemplo del caso de uso que estás tratando de resolver? –

+0

¿Alguna vez resolvió esto? – edhedges

Respuesta

0

Marioosh.

Mensaje/Redirigir/Get hace dos escenarios de ciclo de vida:

  • La redirección provoca una respuesta para no Faces (Sección 2.1 de la especificación JSF-2).

  • Obtiene causas de una solicitud de No caras con una respuesta de caras (Sección 2.1.1). Se crea una nueva vista en este escenario.

0

algunos marcos implementan esta estrategia de manera predeterminada: por ejemplo Spring WebFlow. Cada envío (POST) es seguido por un GET de redireccionamiento con un parámetro "ejecución" que permite a Spring encontrar la MISMA vista. por ejemplo:

http://myhost:8080/booking-spring-faces/spring/mypage?execution=e1s2 

Me encantaría encontrar esta característica en kits de herramientas JSF como Omnifaces de BalusC!

Cuestiones relacionadas