我是 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
}
}
}
这对我来说感觉不合适,除了更简单的方法来完成它之外,我会。有人可以帮忙吗?谢谢