我有控制器检查Command Object
是否有效。如果不是,我会渲染错误template
:
if (!cmdObj.validate()) {
render (status: 400, template:'error', model: [errorObj: cmdObj])
return
}
然后在错误template
中,我有以下代码来呈现bean的所有错误
<div>
<g:hasErrors bean="${errorObj}">
<div class="error-messages">
<g:renderErrors bean="${errorObj}"/>
</div>
</g:hasErrors>
</div>
这很好用。但是,我想在处理异常时使用相同的错误template
。例如,在同一个控制器中,我有一个处理异常的方法:
def handleMyCustomException(MyCustomException e) {
render (status: 500, template:'error', model: [errorObj:e])
}
这不起作用,因为Exception
不是Grails可用于呈现错误的bean。
有没有办法可以将我的错误template
重用于无效和异常的bean?
我使用的是Grails 2.4.4
答案 0 :(得分:0)
以下是我提出的一种简单方法,让模板同时显示Bean
个错误和Exceptions
<div>
<g:if test="${exception}">
<div class="error-messages">
${exception.message}
</div>
</g:if>
<g:elseif test="${errorObj}">
<g:hasErrors bean="${errorObj}">
<div class="error-messages">
<g:renderErrors bean="${errorObj}"/>
</div>
</g:hasErrors>
</g:elseif>
</div>
然后在异常处理程序中:
render (status: 500, template:'error', model: [exception:e])