我有一个Command对象如下:
class TestCreationCommand {
String title
List testItems = [].withLazyDefault {new VocabQuestion()}
static constraints = {
title(blank:false,maxLength:150)
testItems( validator: { ti ->
ti.each {it.validate()}
} )
}
}
Test Items是VocabQuestion对象的列表。 VocabQuestion如下:
class VocabQuestion {
static constraints = {
question(blank:false,maxLength:150)
answer(blank:false,maxLength:40)
}
static belongsTo = [vocabularyTest: VocabularyTest]
String question
String answer
}
我正在尝试使用自定义vaildator验证VocabQuestion上的约束(在上面的Command类的约束中),但我不断收到以下错误消息。
Return value from validation closure [validator] of property [testItems] of class [class vocabularytest.TestCreationCommand] is returning a list but the first element must be a string containing the error message code
我有许多不同的尝试......
我不确定该消息告诉我什么或如何调试闭包的返回值是什么。
任何人都可以提供任何指示吗?
答案 0 :(得分:0)
你没有回到Grails的理解。你不能期望只返回任何东西,并让Grails知道如何处理它。返回布尔值或错误字符串。
static constraints = {
title(blank:false,maxLength:150)
testItems( validator: { ti ->
Boolean errorExists = false
ti.each {
if (!it.validate()) {
errorExists = true
}
}
errorExists
})
}
答案 1 :(得分:0)
查看此SO question它可能是您需要的验证器格式。
.every将返回一个布尔值。