【问题标题】:set value of a field in gsp grails在 gsp grails 中设置字段的值
【发布时间】:2014-12-16 15:05:30
【问题描述】:

我有一个相册域类;

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>**

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

如果我的方法不正确,任何替代建议都会有很大帮助

谢谢..

【问题讨论】:

  • 您有两个名为 pictures 的属性。一个是 SortedSet 类型,另一个是 Picture 类型。

标签: grails gsp


【解决方案1】:

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

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

静态约束 = {

图片可为空:真,空白:真;

专辑可以为空:true

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

}

【讨论】:

  • 在我的情况下,我不能让它们为空。只是为了提供更多信息,这些字段生成为 ; 和类似的
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多