【问题标题】:Bind a list of objects into a Grails command?将对象列表绑定到 Grails 命令中?
【发布时间】:2016-02-02 18:33:42
【问题描述】:

我有 2 个命令对象,其中一个包含其他列表

@grails.validation.Validateable
class SongCommand {

    String title
    List<CoupletCommand> coupletCommandList = [].withLazyDefault {new CoupletCommand()}
    Boolean isChorusRepeat

    static constraints = {
        title blank: false, size: 1..129
        coupletCommandList validator: { couplets, obj ->
            def isValid = true
            couplets.each {
                isValid = isValid && it.validate()
            }
            return isValid
        }
    }
}
class CoupletCommand {

    Integer coupletPosition
    String coupletText
    Boolean isChorus

    static constraints = {
        coupletText blank: false, size:20..700
        isChorus nullable: true
    }
}

从前端到控制器我传递了这样的东西

[coupletText:2342342352342, coupletPosition:1, isChorus:false]
[coupletText:frfsdfsdf, coupletPosition:2, isChorus:true]
......
[coupletText:sd9f9s9df9, coupletPosition:n, isChorus:false]

当尝试在控制器上保存对联列表时

def saveCouplets() {
        def songCommand = new SongCommand()
        // bad, but not necessary now
        def count = session['songId'] as Integer
        def bindingMap
        for (int i = 1; i <= count; i++) {
            bindingMap = [coupletText: params['coupletText-' + i],
                          coupletPosition: params['coupletPosition-' + i],
                          isChorus: (params['isChorus-' + i]) ? params['isChorus-' + i] : false]
            songCommand.coupletCommandList.add(bindingMap)
        }

        //Validate it
        //if valid
        if (songCommand.validate()) {
            coupletService.addCouplets(bindingMap, params)
        } else {
            render model: [command: songCommand]
        }
        //else render view show model [command: command]
    }

我收到错误消息

groovy.lang.MissingMethodException 信息 方法没有签名:java.util.LinkedHashMap.validate() 适用于参数类型:() 值:[] 可能的解决方案:wait()、values()、values()

【问题讨论】:

    标签: grails data-binding


    【解决方案1】:

    CoupletCommand 需要实现 Validateable 或者也需要注解。其他一切似乎都很好

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 1970-01-01
      • 2013-06-18
      • 2015-12-12
      • 2012-03-31
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多