2009-03-16 21 views
11

¿cómo se implementaría un botón de retroceso como un botón de comando que funciona universalmente? con el botón Atrás no me refiero al botón del navegador, sino a un botón que se encuentra en algún lugar de la página. no siempre es posible usar el patrón Post-redirect-get.atrás commandbutton en jsf

es bastante impracticable pasar la información en cada uno donde el botón debe apuntar.

¿Existe tal vez una palabra clave reservada para una regla de navegación que apunta a la última regla de navegación aplicada?

Respuesta

15

Uso un h:commandLink con el atributo onclick="history.go(-1)" en este caso. Funciona universalmente.

+1

Esperaba que esto me ayudara, pero no parece funcionar con h: commandButton. :-( –

+3

¿Realmente necesita usar una etiqueta jsf para esto? De lo contrario, intente con Funcionará. – alexmeia

+0

Parece que actualizar la página actual, que ya no se muestra, por lo que cualquier ManagedProperties obtendrá excepciones de puntero nulo. ¿Alguna idea de cómo prevenir esto? –

3

Mi primera idea:

en cada

<h:commandLink .....> 

y etc; almacene la cadena de navegación en un bean, o incluso una pila, y luego el botón Atrás puede recuperarlo y simplemente devolverlo según faces-config.xml

Segunda idea.

Pero en la reflexión, debe anular o usar un filtro para interceptar los comandos de navegación y empujarlos a una pila. Luego, el botón Atrás puede abrir la navegación y listo.

1

Guardaría la cadena de navegación en un tipo de datos de pila y usaría stack.peek() para mostrar cuál es el sitio detrás de usted, y cuando se hace clic desencadenará un evento de acción que desencadena el stack.pop()

1

se puede utilizar:

<p:commandButton onclick="window.history.back();"/> 

Esa instrucción hacer lo mismo que el que onclick="history.go(-1)" alexmeia ha dicho.

+0

Malo modo de utilizar un CommandButton. Utilice un 'p: button' o agregue 'type =' button '' a él. Consulte la documentación de PrimeFaces para esto. – Kukeltje

Cuestiones relacionadas