检索Grails域验证消息

时间:2014-04-10 14:05:54

标签: java mysql spring grails

我对Grails很新,我确信已多次询问过这个问题。我有一个我用grails开发的应用程序。在我的服务中,我进入多个表。如果其中一个失败并出现mysql唯一约束异常,则会在domainInstance.errors对象中收到错误。如何解析此问题以将适当的错误代码返回给我的控制器。

通常在春天,我通常会为控制器添加一个异常拦截器来处理这个问题。什么是用grails做的首选方式。

1 个答案:

答案 0 :(得分:1)

当验证的域对象有验证错误时,它们存储在domainObject.errors下,作为Spring Errors接口的实现。要在GSP中呈现此对象的字段的错误,通常使用以下内容:

<g:hasErrors bean="${book}" field="title">
    <div class="errors">
       <g:renderErrors bean="${book}" field="title" as="list" />
    </div>
</g:hasErrors>

显示的确切消息是从message*.properties文件中解析的。如果您想在控制器中获取这些消息,请执行以下操作:

class MyController {

  MessageSource messageSource
  LocaleResolver localeResolver

    def myAction(Book book) {
        Locale locale = localeResolver.resolveLocale(request)

        if (!book.validate()) {
            List allErrorMessages = book.errors.allErrors.collect {
                messageSource.getMessage(it, locale)
            }

            // print all error messages
            println allErrorMessages
        }
    }
}