2014-02-23 29 views
3

我写一个Grails(目前2.3.3)应用程序并创建了一个validateable命令自定义错误消息的对象类似以下内容:Grails的定义命令对象

@Validateable 
class MyCustomCommand { 
    String name 

    static constraints = { 
    name blank: false 
    } 
} 

在我i18n/messages.properties文件I定义了以下属性来覆盖默认的错误消息。

MyCustomCommand.name.blank=Name must be provided. 
MyCustomCommand.name.null=Name must be provided. 

根据我的说法,每个Grails文档应采用格式[Class Name].[Property Name].[Constraint Code]。当我运行我的应用程序时,如果我将值留空,我仍然得到null属性的默认消息。

我也尝试了下面的默认消息的例子,并定义它们如下,但仍然得到默认消息。

MyCustomCommand.name.blank.message=Name must be provided. 
MyCustomCommand.name.null.message=Name must be provided. 

我假设我在这里错过了一些简单的东西,但尚未偶然发现什么。任何建议,我在做什么不正确?

回答

2

确实很简单。信息应该看起来像:

myCustomCommand.name.blank=Name must be provided. 
myCustomCommand.name.nullable=Name must be provided. 


//className.propertyName.blank (camelCase with first letter of class name lower) 
+0

我相信这是第一个变化我试过了,我刚才试了一下,还是把默认。 – Michael

+0

哎呀我错过了零件,而关于所有关于小写的情况。纠正。 :) – dmahapatro

1

所以,正如我预料的那样,它是简单的。我使用的默认值为null,其中我真正需要的是nullable。这与合适的约束名称相匹配是有意义的。

因此正确的版本是:

myCustomCommand.name.blank=Name must be provided. 
myCustomCommand.name.nullable=Name must be provided.