我在项目中使用Grails 2.3.11。
我有下一个情况:
我有控制器,在异常时调用重定向:
class SomeController{
someAction(){
try {
doSmth()
} catch (exception) {
return redirect (action: 'index') //first redirect HERE
}
}
}
我有过滤器,也会在另一个异常上调用重定向。
class BreadCrumbsFilters {
def filters = {
all(
controller: '*',
action: '*'
) {
after = {
if (request.xhr) return
try {
buildBreadCrumbs()
} catch (IllegalArgumentException) {
redirect(controller: 'login', action: 'auth') //second redirect HERE
return false
}
}
}
}
}
重定向无法调用两次。
问题:如何检查是否已调用重定向?
我找到了下一个解决方案: 检查响应状态。
if(response.status != 3**) redirect();
这种方法是否正确? 谢谢!
答案 0 :(得分:3)
在2.3.11中,您可以拨打以下电话:
import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes
request.getAttribute(GrailsApplicationAttributes.REDIRECT_ISSUED)
如果已发出重定向,则返回重定向URI,如果未发出重定向,则返回null
。