2010-12-06 55 views
6

有沒有辦法讓Grails在發送到客戶端瀏覽器之前捕獲所有可能的HTTP錯誤,以便能夠處理髮送給客戶端的內容?我的意思是所有的4xx和5xx HTTP狀態碼,不僅像其他人所建議的403,404和500。如何全局處理Grails中的HTTP錯誤(狀態碼4xx/5xx)?

我想要做的就是首先捕獲所有的HTTP錯誤,而不必逐一指定它們,然後在第二步中過濾(例如在錯誤控制器中)特定的錯誤代碼我想處理(例如400),但至少那些我不會指定的將渲染到我定義的通用錯誤模板。

如果無法完成(或不應該完成),應該檢查並處理哪些HTTP錯誤代碼?我至少可以看到這些代碼在某些時候發生了:400,401,403,404,405,500,501,503。還有,它們應該如何處理,使用HTTP響應代碼映射?

謝謝!

回答

2

還沒有真正嘗試過,但也許數字約束可能工作?

"$errorCode" { 
    controller = "errors" 
    action = "displayError" 
    constraints { 
      errorCode(matches:/\d{3}/) 
    } 
} 
+0

嘿亞倫,剛試過你的建議,但事實證明,當試圖運行應用程序時,Grails失敗。以下是正在寫入日誌: 2010-12-06 11:10:23,984 [main] ERROR context.ContextLoader - 上下文初始化失敗 org.springframework.beans.factory.BeanCreationException:創建名爲org的bean時出錯。 codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib':bean初始化失敗 – djule5 2010-12-06 16:17:41