2010-06-05 10 views
5

Básicamente tengo 2 preguntas con respecto a los filtros de grails.Preguntas sobre los filtros de grails

  1. Según la documentación griales se puede hacer algo, como a continuación en un filtro
if (userId != paramsUserId) { 
    flash.message = "You can only modify yourself" 
    redirect(action: 'list') 
    return false 
} 

Si la condición anterior es cierto, entonces ¿cómo va la instrucción de retorno se ejecutan?

  1. ¿Se puede redirigir en mi filtro a alguna acción que también tenga un redireccionamiento?

Respuesta

6

1 - La devolución falsa de un filtro impide la ejecución de otros filtros (y la acción si está en un filtro anterior). El navegador obtendría la redirección 302 e iría al método de 'lista' al que solicitó redirigir.

http://grails.org/doc/2.3.7/guide/single.html#filterTypes

2 - sip. redirigir a otra cosa que redirige está bien. Realmente no le importa al navegador. Si lo ves en firebug, verás qué es realmente una redirección. Cuando redirige el navegador recibe una respuesta con un código de estado HTTP de 302 ("Encontrado"), esta respuesta también incluye la url que el navegador debe solicitar a continuación (lo que está redirigiendo, es decir, la url de la "lista" método en el ejemplo anterior). El navegador luego solicita esa url y se comporta como si fuera la primera solicitud.

Es por eso que el alcance del flash es tan útil, las cosas en el alcance del flash en vivo hasta la próxima solicitud, por lo que abarcan redirecciones.

+0

Con algunos contenedores de servlet (como Tomcat), debe tener cuidado al enviar demasiados redireccionamientos. – Blacktiger

Cuestiones relacionadas