2016-04-01 52 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

非常感謝!正常工作! –