我是grails的新手,我试图解决的问题非常简单:我的服务器应该在请求中收到一些json数据验证数据并将其保存到数据库中。 据我所知,我使用Command Object来验证数据。问题是如果我的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
Setter - &gt;
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
}
}
}
这对我来说并不合适,除了更简洁的方法,我会这样做。这个 有人可以帮忙吗?谢谢