我有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>
我有一个propertyeditor绑定将Course转换为String并返回,它只使用实体id。
我到了 InvalidPropertyException:
bean类[com.example.app.User]的无效属性'courses [com.example.app.Course@7]': 属性路径'courses [com.example.app.Course@7]'中的索引无效;
嵌套异常是org.springframework.beans.TypeMismatchException: 无法将类型'java.lang.String'的属性值转换为属性'null'所需的类型'com.example.app.Course';
嵌套异常是java.lang.NumberFormatException:对于输入字符串:“com.example.app.Course@7”
我不知道什么是null,因为我可以在数据库中看到带有id 7的课程。
从根本上说,什么是评估路径属性以及它如何理解jsp上下文?这是Spring表达式语言吗?我一直在寻找资源来弄清楚如何从我的角色组中为我的地图键选择值,但我找不到多少。
答案 0 :(得分:0)
我认为你在课程中有一个getter getId()
或类似内容,所以在radiobuttons标签中代替path="courses['${course}']"
而不是path="courses['${course.id}']"
(或course.whateverTheIdIsCalled
为id getter {{ 1}})