设置gsp grails中字段的值

时间:2014-12-16 15:05:31

标签: grails gsp

我有一个专辑域类;

class Album {

    String caption
    String description
    SortedSet pictures

    static hasMany = [pictures:Picture,posts:Post]
}

class Post {

    Album album
    Picture picture
    String caption
    String content

}

在我的gsp中,我试图设置相应专辑和图片值的值;

<label for="picture">
    <g:message code="post.picture.label" default="Picture" />
</label>
**<span id="picture" aria-labelledby="picture-label">${pictureInstance?.caption?.encodeAsHTML()}</span>**

<label for="album">
    <g:message code="post.album.label" default="Album" />
</label>
**<span id="album" aria-labelledby="album-label">${pictureInstance?.album?.encodeAsHTML()}</span>**

虽然在我的浏览器中,我在专辑和图片标签前面看到正确的值,当我尝试保存帖子时,它表示属性图片和相册不能为空。我不明白为什么不将这些值写入数据库..

如果我实现这一目标的方法不对,任何替代建议都会有很大帮助

谢谢..

1 个答案:

答案 0 :(得分:0)

Grails有一个强大的机制来验证域类中定义的属性。约束块可用于定义传递闭包的属性的规则。在那里你可以定义许多规则,如空白,可空,最小和最大尺寸等。每当在grails中调用save()时,它会自动调用validate方法来验证这些约束。

我认为您的案例的问题是默认情况下,如果您没有在Grails中的属性约束内定义任何规则,那么它们会采用默认值,例如在您的情况下为null。所以你得到的不能是空消息。为此,定义域类

中约束块内不同属性的必需规则

静态约束= {

picture nullable:true,blank:true;

专辑nullable:true

//其他属性的规则在这里

}