Я пытаюсь опубликовать данные формы как
"student.id = 1 & courses [10] .course.id = 10"
.пытаются связать, как показано ниже ...
class StudentEnrollmentCmd {
Student student
Map<String,CourseCmd> courses;
}
class CourseCmd {
CourseDomain course
}
class CourseDomain {
Long id
}
надеялся, что он будет привязан к
"StudentEnrollmentCmd -> courses -> course.id"
, который, кажется, работает в Grails 2.2.4, но не работает в 3.3.7 со следующим исключением
Нет такого свойства: course.id для класса: student.CourseCmd
Вот тестовый пример, который иллюстрирует проблему
void 'databinding from request parameters'() {
given:
// request with simple formdata: student.id=1&courses[10].course.id=10
MockHttpServletRequest request = buildMockRequestWithParams('POST',['student.id':'1','courses[10].course.id':'10']);
DataBindingSource source = bindingSourceCreator.createDataBindingSource(null,null,request);
// databinder & command object
def binder = new SimpleDataBinder()
def obj = new StudentEnrollmentCmd()
when:
binder.bind(obj,source)
then:
// this should not throw an exception, but throws an exception
MissingPropertyException ex = thrown()
System.out.println ( "Exception again:" + ex.message );
// the following should work, but does not work
obj.student.id == 1
obj.courses['10'].course.id == 10
}
Вот ссылка на полную спецификацию ... https://github.com/swzaidi/sample/blob/master/grails3.3.7/src/test/groovy/student/DataBindingSpec.groovy
Нужна помощь по прохождениюданные формы, чтобы они правильно связывались с указанными выше объектами команд.