基本上我有两个关于grails过滤器的问题。
if (userId != paramsUserId) { flash.message = "You can only modify yourself" redirect(action: 'list') return false }
如果上述条件为真,则返回语句将如何执行?
答案 0 :(得分:6)
1 - 从过滤器返回false会阻止执行进一步的过滤器(以及在过滤器之前的操作)。浏览器将获得302重定向并转到您要求重定向到的“列表”方法。
http://grails.org/doc/2.3.7/guide/single.html#filterTypes
2 - 是的。重定向到重定向的其他东西很好。这对浏览器来说无关紧要。如果你在firebug中观看它,你会看到重定向到底是什么。当您重定向浏览器时收到HTTP状态代码为302(“Found”)的响应时,此响应还包括浏览器接下来要请求的URL(您要重定向到的内容,即“list”的url)上例中的方法)。然后,浏览器请求url,它的行为就像是第一个请求一样。
这就是闪存范围如此有用的原因,闪存范围内的东西会持续到下一个请求,因此它们会跨越重定向。