Форма пружины: радиокнопки: карта: ссылочный ключ в радиокнопке для установки значения? - PullRequest
1 голос
/ 07 января 2012

У меня есть Map<Course, Role> courses, принадлежащий объекту команды user, и я хочу выбрать роль из roles [enum array] = Role.values для каждого курса в наборе ключей. Я заполняю записи всеми желаемыми курсами и ролью по умолчанию и помещаю это в пользователя в модели. Ниже моя форма, но я не могу понять, как обратиться к ключу (который является "курсом") для карты

    <form:form method="POST" commandName="user">
    <table>
        <tr>
            <td>User Name:</td>
            <td><form:input path="name" /></td>
        </tr>
        <c:forEach var="course" items="${courseChoices}">
            <tr>
            <form:radiobuttons path="courses['${course}']" items="${roles}"/>

            </tr>
        </c:forEach>
    </table>
    <input type="submit" value="save changes">
    <form:errors path="*" />
</form:form>

У меня есть свойство редактора, связанное с преобразованием курса в строку и обратно, которое просто использует идентификатор объекта.

Я получаю InvalidPropertyException:

Недопустимое свойство 'courses [com.example.app.Course@7]' класса бобов [com.example.app.User]: Неверный индекс в пути свойства 'courses [com.example.app.Course@7]';

вложенным исключением является org.springframework.beans.TypeMismatchException: Не удалось преобразовать значение свойства типа «java.lang.String» в требуемый тип «com.example.app.Course» для свойства «null»;

вложенным исключением является java.lang.NumberFormatException: для входной строки: "com.example.app.Course@7"

Я не знаю, что такое NULL, потому что я могу видеть Курс с идентификатором 7 в моей базе данных.

По сути, что такое оценка атрибута пути и как он понимает контекст jsp? Это язык выражения Spring? Я искал ресурсы, чтобы выяснить, как выбрать значения для ключей моей карты из моего набора ролей, но я не нашел много.

1 Ответ

0 голосов
/ 07 января 2012

Я полагаю, у вас есть получатель getId() или что-то похожее в курсах, поэтому вместо path="courses['${course}']" в теге radiobuttons напишите path="courses['${course.id}']" (или course.whateverTheIdIsCalled для идентификатора получателя getWhateverTheIdIsCalled())

...