У меня есть 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>
У меня есть редактор свойств, связанный с преобразованием курса в String и обратно, который просто использует идентификатор объекта.
Я получаю InvalidPropertyException:
Недействительное свойство "курсы [com.example.app.Course@7]" класса компонента [com.example.app.User]: недопустимый индекс в пути к свойству "курсы [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? Я искал ресурсы, чтобы выяснить, как выбрать значения для ключей карты из моего набора ролей, но я не нашел многого.