为List的元素添加约束

时间:2015-03-14 09:34:13

标签: grails command constraints

是否有任何可能的方法为List的元素添加约束?例如,我有一个接受List的命令,我希望在这个元素上添加约束,例如大小。

class SongCommand {

    String title
    List<String> couplet
    List<String> chorus
    Boolean isChorus
    Boolean isChorusRepeat

    static constraints = {
        title(blank: false, maxSize: 6)
        isChorus(blank: true)
    }

}

怎么做?

谢谢。

1 个答案:

答案 0 :(得分:2)

约束size将用于此目的。查看documentation以获取完整的详细信息,但您的示例是:

static constraints = {
  ...
  chours(size:0..3) // example of minimum of 0 maximum of 3
  ...
}

以上将限制元素的数量(最小和最大),但是如果要验证列表的内容,例如您需要实现自定义validator所需的每个元素。例如:

static constraints = {
  chours(validator: { val ->
    boolean isValid = true 
    val.each {
      if (it.size() < 3) isValid = false
    } 

    return isValid
  })
}

上面的示例验证列表中的每个元素的大小是三个字符或更多。