【发布时间】:2011-03-16 02:33:30
【问题描述】:
我目前正在尝试在 grails 中为默认约束指定自定义错误消息,但到目前为止我得到的只是默认错误消息。
我知道我必须编辑 grails-app/i18n/messages.properties 文件
如果我更改以下默认错误代码消息,它将正确显示新的错误消息
default.blank.message=Property [{0}] of class [{1}] cannot be blank
但是,这不是我想要做的。我需要更精细的错误报告,并且有多个可以为空白的字段等。我希望能够为类中的每个字段显示自定义消息
package com.mycompany.myapp
class Test{
String name
def constraints = {
name(nullable:false, blank:false)
}
}
(在 messages.properties 末尾附加以下代码)
test.name.blank=Name cannot be blank
test.name.nullable=Name cannot be nullable
根据 grails 文档,这应该可以正常工作,无论有没有包名 - className.propertyName.blank
grails.org/doc/latest/(约束部分)和(第 7.4 节 - 验证和国际化)
我已经尝试了所有我能想到的组合,但它总是显示自定义消息
我也试过安装 grails i18n 模板插件
http://www.grails.org/I18n+Templates+Plugin
它会自动为我生成错误代码。我将新的错误代码附加到现有 messages.properties 文件的末尾,但我仍然收到默认错误消息。
但是,插件生成的错误代码有所不同。
而不是grails文档中指定的格式——test.name.null=......,它自动生成了test.name.null.error=Custom Message
我也尝试过完全删除默认错误消息,但它们仍然显示
如果有人之前遇到过这个问题,我将不胜感激任何人都可以给我的帮助
提前致谢
【问题讨论】:
-
我已经创建了关于如何创建自定义验证并将自定义错误消息发布回您的视图的详细答案:stackoverflow.com/questions/14038905/…
-
会让 int
test.name.blank.message永远改变什么吗? -
这拯救了我的一天:
((MessageSource) Holders.getGrailsApplication().getMainContext().getBean("messageSource")).getMessage(e.getErrors().getAllErrors().get(0), LocaleContextHolder.getLocale());
标签: grails groovy grails-plugin grails-validation