【问题标题】:Grails -- check whether the request is already redirectedGrails -- 检查请求是否已经被重定向
【发布时间】:2016-04-01 09:42:58
【问题描述】:

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

这个方法正确吗? 谢谢!

【问题讨论】:

    标签: spring http redirect grails


    【解决方案1】:

    在 2.3.11 中,您可以调用以下代码:

    import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes
    
    request.getAttribute(GrailsApplicationAttributes.REDIRECT_ISSUED)
    

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

    【讨论】:

    • 非常感谢!工作正常!
    猜你喜欢
    • 2012-06-16
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多