首先先贴出原代码
<form:form action="emp" method="POST" modelAttribute="employee">
<!-- path属性对应text的name属性 -->
LastName:<form:input path="lastName"/><br>
Email:<form:input path="email"/><br>
<%
Map<Integer, String> genders = new HashMap<Integer, String>();
genders.put(0, "Female");
genders.put(1, "Male");
request.setAttribute("genders", genders);
%><!-- 采用map集合保存gender内容,然后通过request转发被items捕获 -->
Gender:<form:radiobuttons path="gender" items="${genders }"/><br>
Department:<form:select path="department.id"
items="${departments }" itemLabel="departmentName" itemValue="id"/><br>
<input type="submit" value="submit"/>
</form:form>
(注意在form:select中的path要和itemValue的属性是一致的,不然也会报错。)
以上代码在执行后会报Invalid property ‘department’ of bean class…的错误, 也就是说department无法映射到Department这个bean中。
**解决方法:**后面我去检查了Department的get,Set方法以及构造方法,发现不存在无参构造器。添加了无参构造器后顺利解决了问题。