我在UrlMappings.groovy
"404"(controller: "error", action: "notFound")
"500"(controller: "error", action: "serverError")
处理程序的实现方式如下:
class ErrorController {
def notFound() {
flash.msg = "Not Found"
redirect uri: '/'
}
def serverError() {
flash.msg = "Oops"
redirect uri: '/'
}
}
当发生404错误时,一切正常,但当发生500错误时,当我重定向到/
时,闪存范围为空。是否有一些理由为什么在500之后应该清除闪存范围(由服务器上的未捕获异常引起)?
答案 0 :(得分:0)
您确定只有500
错误代码的映射吗?
确保在UrlMappings.groovy
中只有500个映射(删除或注释掉Grails在create-app上提供的默认映射)
static mappings = {
"404"(controller: "error", action: "notFound")
"500"(controller: "error", action: "serverError")
"/"(view:"/index") //or whichever view you have for root context.
//"500"(view:'/error') [Culprit]
}
它应该按照预期的方式使用上面的url映射。
实际上,放置很重要,如果您在grails提供的默认映射之后放置500的自定义映射,那么您将看到预期的结果。最后一个映射会覆盖旧映射。