我正在使用每个状态代码的错误页面,并且很难呈现视图。
我正在使用正常的URLMappings策略,并使用错误控制器进行额外处理并渲染视图(我从500开始,但会更明显地添加):
"500"(controller: 'error', action: 'internalServerError')
在我的控制器中,我只是渲染与错误相关的视图:
def internalServerError() {
render view: '/error/internalServerError'
}
视图不是什么特别的,只包含一个简单的消息等。当我在我的代码中植入导致异常的东西时,上面的控制器操作会被调用,但由于某种原因渲染不会导致视图渲染。它基本上只是吃了异常,从用户的角度来看,似乎什么也没发生。
我一直在修补不同的渲染选项和返回但总是会发生同样的事情。另外值得注意的是将URLMappings更改为:
"500"(view:'/error/internalServerError')
导致同样的事情发生。我在这里错过了什么吗?
答案 0 :(得分:4)
直接渲染视图,而不是在动作中提供相对路径: -
def internalServerError() {
render view: 'internalServerError'
}
grails-app/views/error/internalServerError.gsp
。
<强>更新强>
以下是它的工作原理:
//UrlMapping:
"500"(controller: 'errors', action: 'internalServerError')
//ErrorsController:
class ErrorsController {
def index() {
response.sendError(500)
}
def internalServerError(){
render view: 'internalServerError'
}
}
//grails-app/views/errors/internalServerError.gsp
This is my customized Internal Server Error.
尝试点击控制器的index
动作
http://localhost:8080/yourApp/errors
您应该会看到自定义的错误页面。
如果你试图处理异常,例如
,这同样适用
"500"(controller: 'errors', action: 'internalServerError', exception: Exception)
def index(){
throw new Exception()
}
将产生相同的结果。
注意: - 强>
您需要覆盖或删除UrlMapping.groovy
中提供的此默认grails条目
//"500"(view:'/error')
答案 1 :(得分:1)
看起来它与Grails渲染或URL映射无关。它发生在应用程序的某些部分而不是其他部分,因此存在错误。为URLMappings讨论保持活力。