我正在处理每个状态代码的错误页面,并且在渲染视图时遇到了问题。
为此,我使用普通的URLMappings策略,并使用错误控制器进行额外的处理和渲染视图(我从500开始,但将添加更多内容):
"500"(controller: 'error', action: 'internalServerError')在我的控制器中,我只是渲染与错误相关的视图:
def internalServerError() {
render view: '/error/internalServerError'
}视图并没有什么特别之处,只是包含了一条简单的消息之类的。当我在代码中植入一些导致异常的东西时,上面的控制器操作确实会被调用,但由于某种原因,渲染不会导致视图呈现。它基本上只是接受了异常,从用户的角度来看,似乎什么都没有发生。
我一直在修补不同的渲染选项和返回,但总是发生同样的事情。还值得注意的是,将URLMappings更改为:
"500"(view:'/error/internalServerError')会导致同样的事情发生。我是不是漏掉了什么?
发布于 2013-06-18 00:43:37
看起来它与Grails呈现或URL映射无关。它发生在应用程序的某些部分,而不是其他部分,所以有一个bug。为URLMappings的讨论保持活力。
发布于 2013-06-15 04:07:46
直接呈现视图,而不是在操作中提供相对路径:-
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')
https://stackoverflow.com/questions/17116252
复制相似问题