2016-04-01 84 views
2

我在项目中使用了Grails 2.3.11。Grails - 检查请求是否已被重定向

我旁边的情况:

我有控制器,该呼叫重定向例外:

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(); 

此方法是否正确? 谢谢!

回答

2

在2.3.11您可以拨打以下:

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

request.getAttribute(GrailsApplicationAttributes.REDIRECT_ISSUED) 

如果重定向已经发布,如果没有重定向已发出将返回null将返回重定向URI。

+0

非常感谢!正常工作! –