java - 检索 Grails 域验证消息

标签 java mysql spring grails

我对 grails 还很陌生,我确信这个问题已经被问过很多次了。我有一个正在用 grails 开发的应用程序。在我的服务中,我在多个表中输入一个条目。如果其中一个因 mysql 唯一约束异常而失败,我会收到一个错误作为 domainInstance.errors 对象的一部分。我如何解析它以将适当的错误代码返回到我的 Controller 。

通常在 Spring ,我通常会为 Controller 添加一个异常拦截器来处理这个问题。在 grails 中执行此操作的首选方法是什么。

最佳答案

当经过验证的域对象出现验证错误时,它们将存储在 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 文件解析的。如果您想在 Controller 中获取这些消息,请执行以下操作:

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
        }
    }
}

关于java - 检索 Grails 域验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990388/

相关文章:

java - 您可以在 Java 中声明无参数方法以在 Scala 中使用吗?

java - 存储电子邮件附件元数据

php - 如何使用标题使用 MATCH() AGAINST() 获取相关问题

spring - 回滚已检查和未检查异常的事务

java - 为什么 spring rest 文档使用 MockMvcBuilders.webAppContextSetup?

java - 如何检索给定域类的 Spring 数据存储库实例?

java - 当实体具有长 ID 时,GWT Requestfactory 实体定位器无法与 Objectify 一起使用

Java Bean 数组列表

mysql - 如何在同一个表上查询 UNION 并创建新列 mysql?

php - 在第 26 行获取错误 : Fatal error: Call to undefined function: () in/homepages/44/d1895123746/htdocs/cll/index. php。如何修复?