2010-06-05 11 views
5

Fondamentalmente ho 2 domande riguardanti i filtri Grails.Domande sui filtri Grails

  1. Secondo la documentazione graal si può fare qualcosa di simile di seguito in un filtro
if (userId != paramsUserId) { 
    flash.message = "You can only modify yourself" 
    redirect(action: 'list') 
    return false 
} 

Se la condizione di cui sopra è vero, allora come farà l'istruzione return ottenere eseguito?

  1. Posso avere un reindirizzamento nel mio filtro per un'azione che ha anche un reindirizzamento?

risposta

6

1 - Tornando falsa da un filtro impedisce ulteriori filtri (e l'azione se è in una prima filtro) da eseguire. Il browser otterrebbe il reindirizzamento 302 e passerà al metodo "elenco" a cui hai chiesto di reindirizzare.

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

2 - sì. reindirizzare a qualcos'altro che reindirizza va bene. Non importa davvero al browser. Se lo guardi in Firebug, vedrai cosa è veramente un redirect. Quando si reindirizza il browser riceve una risposta con un codice di stato HTTP di 302 ("Trovato"), questa risposta include anche l'url che il browser deve richiedere successivamente (la cosa a cui si sta reindirizzando, ovvero l'url per la "lista" metodo nell'esempio sopra). Il browser richiede quindi l'url e si comporta come se fosse la prima richiesta.

Questo è il motivo per cui l'ambito del flash è così utile, le cose in ambito flash sono attive fino alla richiesta successiva, quindi includono i reindirizzamenti.

+0

Con alcuni contenitori servlet (come Tomcat), è necessario fare attenzione nell'inviare troppi reindirizzamenti. – Blacktiger