Tôi đang sử dụng grails 2.2.1 và cố gắng xác thực cấu trúc lệnh lồng nhau. Đây là một phiên bản đơn giản của các đối tượng lệnh của tôi:grails xác thực đối tượng lệnh lồng nhau không hoạt động
@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()
}
}
}
Khi tôi cố gắng để xác nhận một thể hiện của SurveyCommand
nó luôn luôn trả true
bất kể giá trị phần và validator tùy chỉnh của tôi trong SectionCommand
(answerNotBlank
) không bao giờ được gọi. Từ tài liệu về grails, có vẻ như là this kind of nested structure is supported (deepValidate
mặc định là true). Tuy nhiên, có lẽ quy tắc này chỉ áp dụng cho các đối tượng miền và không phải đối tượng Command? Hoặc tôi chỉ thiếu một cái gì đó ở đây?
nice! công trình lớn, tuy nhiên là có một cách DRY hơn thay vì xác định rõ ràng một ràng buộc cho mỗi tài sản phụ? –