Sto utilizzando Grails 2.2.1 e sto tentando di convalidare una struttura di comando nidificata. Ecco una versione semplificata dei miei oggetti comando:grails validate oggetto comando nidificato non funzionante
@Validateable
class SurveyCommand {
SectionCommand useful
SectionCommand recommend
SurveyCommand() {
useful = new SectionCommand(
question: 'Did you find this useful?',
isRequired: true)
recommend = new SectionCommand(
question: 'Would you recommend to someone else?',
isRequired: false)
}
}
@Validateable
class SectionCommand {
String question
String answer
boolean isRequired
static constraints = {
answer(validator: answerNotBlank, nullable: true)
}
static answerNotBlank = { String val, SectionCommand obj ->
if(obj.isRequired) {
return val != null && !val.isEmpty()
}
}
}
Quando provo di convalidare un'istanza SurveyCommand
restituisce sempre true
non importa i valori di sezione e il mio validatore personalizzato in SectionCommand
(answerNotBlank
) non viene mai chiamato. Dalla documentazione Grails, sembra che this kind of nested structure is supported (deepValidate
predefinito su true). Tuttavia, forse questa regola si applica solo agli oggetti dominio e non agli oggetti Command? O mi manca qualcosa qui?
bello! funziona alla grande, tuttavia c'è un modo più SECCO invece di definire esplicitamente un vincolo per ogni sotto proprietà? –