首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails渲染不会渲染视图

Grails渲染不会渲染视图
EN

Stack Overflow用户
提问于 2013-06-15 03:52:26
回答 2查看 2.3K关注 0票数 0

我正在处理每个状态代码的错误页面,并且在渲染视图时遇到了问题。

为此,我使用普通的URLMappings策略,并使用错误控制器进行额外的处理和渲染视图(我从500开始,但将添加更多内容):

代码语言:javascript
复制
"500"(controller: 'error', action: 'internalServerError')

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

代码语言:javascript
复制
def internalServerError() {
    render view: '/error/internalServerError'
}

视图并没有什么特别之处,只是包含了一条简单的消息之类的。当我在代码中植入一些导致异常的东西时,上面的控制器操作确实会被调用,但由于某种原因,渲染不会导致视图呈现。它基本上只是接受了异常,从用户的角度来看,似乎什么都没有发生。

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

代码语言:javascript
复制
"500"(view:'/error/internalServerError')

会导致同样的事情发生。我是不是漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 00:43:37

看起来它与Grails呈现或URL映射无关。它发生在应用程序的某些部分,而不是其他部分,所以有一个bug。为URLMappings的讨论保持活力。

票数 1
EN

Stack Overflow用户

发布于 2013-06-15 04:07:46

直接呈现视图,而不是在操作中提供相对路径:-

代码语言:javascript
复制
def internalServerError() {
    render view: 'internalServerError'
}

grails-app/views/error/internalServerError.gsp已经就位了。

更新

下面是它的工作原理:

代码语言:javascript
复制
//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)

代码语言:javascript
复制
def index(){
    throw new Exception()
}

都会产生同样的结果。

注释:-

您需要从UrlMapping.groovy中覆盖或删除这个默认的grails提供的条目

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17116252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档