我有一个专辑域类;
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>**
虽然在我的浏览器中,我在专辑和图片标签前面看到正确的值,当我尝试保存帖子时,它表示属性图片和相册不能为空。我不明白为什么不将这些值写入数据库..
如果我实现这一目标的方法不对,任何替代建议都会有很大帮助
谢谢..
答案 0 :(得分:0)
Grails有一个强大的机制来验证域类中定义的属性。约束块可用于定义传递闭包的属性的规则。在那里你可以定义许多规则,如空白,可空,最小和最大尺寸等。每当在grails中调用save()时,它会自动调用validate方法来验证这些约束。
我认为您的案例的问题是默认情况下,如果您没有在Grails中的属性约束内定义任何规则,那么它们会采用默认值,例如在您的情况下为null。所以你得到的不能是空消息。为此,定义域类
中约束块内不同属性的必需规则静态约束= {
picture nullable:true,blank:true;
专辑nullable:true
//其他属性的规则在这里
}