Невозможно связать данные Http-формы с коллекцией HashMap - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь опубликовать данные формы как

"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

Нужна помощь по прохождениюданные формы, чтобы они правильно связывались с указанными выше объектами команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...