Grails - 检查请求是否已重定向

时间:2016-04-01 09:42:59

标签: spring http redirect grails

我在项目中使用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();

这种方法是否正确? 谢谢!

1 个答案:

答案 0 :(得分:3)

在2.3.11中,您可以拨打以下电话:

import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes

request.getAttribute(GrailsApplicationAttributes.REDIRECT_ISSUED)

如果已发出重定向,则返回重定向URI,如果未发出重定向,则返回null