1

我是 grails 的新手,我要解决的问题非常简单:我的服务器应该在请求中接收一些 json 数据,验证数据并将其保存到数据库中。据我所知,我使用命令对象来验证数据。问题是,如果我的 Command 对象包含另一个类的列表(辅助命令对象),解析器将在该字段中放入一个 jsonArray ,这将忽略我的辅助验证。

解析 json ->

void handleRequest(){
    def jsonObject = request.JSON
    doSomething(new PrimaryCommandObject(jsonObject))
}

def doSomething(PrimaryCommandObject cmd){
    if (cmd.validate()) {
        respond cmd
    }else{
        cmd.errors.allErrors.each {
            println it
        }
    }
}

主命令对象 ->

class PrimaryCommandObject{
    int val1
    List<SecondaryCommandObject> collection
}

现在为了绕过这个问题,我添加了一个 setter

二传手->

void setCollection(JSONArray jsonArray){
    this.collection = []
    jsonArray.each { item ->
        SecondaryCommandObject obj = item as SecondaryCommandObject
        if (obj.validate()) {
            this.collection << obj
        }else {
            obj.errors.allErrors.each {
                println it
            }
        }
}

这对我来说感觉不合适,除了更简单的方法来完成它之外,我会。有人可以帮忙吗?谢谢

4

0 回答 0