您好我正在尝试使用其中的对象列表验证对象。 Root实例来自JSON客户端文件。
我创造了类似这样的东西
@Validateable
class Book {
String title
List authors
static hasMany = [authors : Authors]
static constraints = {
authors(nullable:false,validator: { recipients ->
recipients.every { it.validate() }
} )
}
}
@Validateable
class Author {
String name
Integer property
static constraints = {
name(nullable:false)
property((nullable:false, blank: false))
}
}
我正试图以这种方式在控制器中验证它:
class BookController {
def manageBook(Book book){
if (book.validate()) {
//Do my stuff
}else{
// return error
}
}
}
但它根本不起作用,我在控制台中看到了这个错误:
| Error 2012-05-25 11:26:34,014 [http-bio-8080-exec-1] ERROR errors.GrailsExceptionResolver - MissingMethodException occurred when processing request: [POST] /BookApp/rest/bookApp/manageBook
No signature of method: org.codehaus.groovy.grails.web.json.JSONObject.validate() is applicable for argument types: () values: []
Possible solutions: wait(), values(). Stacktrace follows:
Message: No signature of method: org.codehaus.groovy.grails.web.json.JSONObject.validate() is applicable for argument types: () values: []
Possible solutions: wait(), values()
Line | Method
->> 17 | doCall in dataskaterserver.DeviceSeenWifiData$__clinit__closure1_closure2_closure3
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . in ''
^ 680 | run in java.lang.Thread
有人可以帮帮我吗?
答案 0 :(得分:1)
我找到了解决方案,它在文档上...... http://grails.org/doc/latest/guide/validation.html#validationNonDomainAndCommandObjectClasses
注册可验证的类 如果某个类未标记为Validateable,则该框架仍可使其可验证。执行此操作所需的步骤是在类中定义静态约束属性(如上所述),然后通过为Config.groovy @中的grails.validateable.classes属性赋值来告诉框架该类:
grails.validateable.classes = [com.mycompany.myapp.User, com.mycompany.dto.Account]