2012-05-22 66 views
0

我有一个简单的域实体:如何撰写Grails验证邮件?

package shoesshop 

class Brand { 

    String name 
    String description 
    String logoImageURL 

    static constraints = { 
     name(blank: false) 
     logoImageURL(nullable: true) 
    } 
} 

当我尝试保存一个新的品牌与空值正如它的名字,我想呈现一个消息,该消息称,“必须指定名称”。

我tryied的属性添加到messages.properties

brand.name.nullable=Brand name must be specified 

但它不会自动拾取。我应该如何从那里检索它? 我看着brand.errors,它仅包含一个默认消息

Property [{0}] of class [{1}] cannot be null

它还包含一组错误代码,其中之一是brand.name.nullable

回答

2

你有没有试过?:

if(brand.name==null) 
{ 
    flash.message = message(code: 'brand.name.nullable',default:'Brand name must be specified.'); 
    render(view: "create", model: [brand:brand]) 
    return 
} 

你可以尝试“default.null.message”的消息(不知道这将如何与你的整个应用程序执行)更改为

{1} {0} must be specified 
1

很奇怪,我认为可空错误信息显示出来,当你没有为空的约束。在docs空白和可空它清楚地表明,nullableblank不同,并且具有分离的消息。

尝试

brand.name.blank 

我似乎也有添加.error得到的东西才能正常工作:

brand.name.blank.error or brand.name.nullable.error 
+0

这是因为当用户从网上提交时,“名称”将是一个空白字符串,而不是null。 –

+0

这就是我要说的 - 当用户提交一个空白字段时,他没有像他应该得到空白的错误信息。他正在收到可以空的消息。 – Kelly

0

我使用Grails 2.2.3。对于我来说,如果我刷新页面“... /应用程序的名字/ controllername /保存”收到此错误后,我得到

Property [name] of class [class ...] cannot be null 

此消息可以是工作,当我使用

brands.name.blank=The name cannot be empty 

现在改成

brands.name.nullable=The name cannot be null (do not refresh the page!!!)