Bind a list of objects into a Grails command?

MaxR

New member
I have 2 command objects, one of them contained List of other

Code:
@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
    }
}

From front end to controller I passed something like this

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

when try save list of couplets on controller

Code:
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]
    }

I receive error message

Code:
groovy.lang.MissingMethodException Message No signature of method: java.util.LinkedHashMap.validate() is applicable for argument types: () values: [] Possible solutions: wait(), values(), values()
 

EdwardBV

New member
Flexibility can quickly eliminate pain from osteoarthritis and osteochondrosis. Reduces muscle spasm and inflammation, and effective treatment for osteochondrosis and osteoarthritis because it slows the cartilaginous tissue degeneration process, and improves metabolism to promote regeneration of articular cartilage
NUMEROUS EFFECTS
Fixes ailments of traumatic and age-related joints and spine.

PERFECTLY SAFE - NO SIDE-EFFECTS
Completely safe for one-time or regular usage

100% NATURAL COMPOSITION
Only herbal active components

HIGH EFFICIENCY
improves the general condition and reduces pain after first application


TESTED BY EXPERTS
Certified and meets high standards*
Flexibility can quickly eliminate pain from osteoarthritis and osteochondrosis
 
Top