Grails渲染不会渲染视图

时间:2013-06-14 19:52:26

标签: grails

我正在使用每个状态代码的错误页面,并且很难呈现视图。

我正在使用正常的URLMappings策略,并使用错误控制器进行额外处理并渲染视图(我从500开始,但会更明显地添加):

"500"(controller: 'error', action: 'internalServerError')

在我的控制器中,我只是渲染与错误相关的视图:

def internalServerError() {
    render view: '/error/internalServerError'
}

视图不是什么特别的,只包含一个简单的消息等。当我在我的代码中植入导致异常的东西时,上面的控制器操作会被调用,但由于某种原因渲染不会导致视图渲染。它基本上只是吃了异常,从用户的角度来看,似乎什么也没发生。

我一直在修补不同的渲染选项和返回但总是会发生同样的事情。另外值得注意的是将URLMappings更改为:

"500"(view:'/error/internalServerError')

导致同样的事情发生。我在这里错过了什么吗?

2 个答案:

答案 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讨论保持活力。