我有一个带有两个下拉菜单的表单,用于选择学生和学生将要学习的课程。当我使用此表单加载页面时,我会收到错误,我将在下面添加。
这是我的jsp表单。
assignStudent.jsp
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@include file="header.jsp"%>
<p>
<h2>Assign a Student to a Course</h2>
<br />
<form:form method="POST" action="/myApp/assignStudent">
<table>
<tr>
<th>Student</th>
<th>Course</th>
</tr>
<tr>
<td>
<form:select path="studentMap" items="${studentMap}">
</form:select>
</td>
<td>
<form:select path="courseMap" items="${courseMap}">
</form:select>
</td>
</tr>
<tr>
<td align="center" colspan="2"><input type="submit" value="Submit" /></td>
</tr>
<tr>
</table>
</form:form>
</p>
<%@include file="footer.jsp"%>
以下是我的控制器课程的相关部分,我一直在修补:
@RequestMapping(value = "/assignStudent", method = RequestMethod.GET)
public ModelAndView enrollInCourse()
{
Map<Integer, String> studentMap = new HashMap<Integer, String>();
//Create a map to put into the student dropdown menu
for (Student s : studentDAO.allStudents())
{
String fullName = s.getFirstName() + " " + s.getLastName();
studentMap.put(s.getStudentID(), fullName);
}
Map<Integer, String> courseMap = new HashMap<Integer, String>();
//Create a map to put into the course dropdown menu
for (Course c : courseDAO.allCourses())
{
courseMap.put(c.getCourseID(), c.getCourseName());
}
ModelAndView model = new ModelAndView("assignStudent", "command", new StudentCourse());
model.addObject("studentMap", studentMap);
model.addObject("courseMap", courseMap);
return model;
}
以下是我收到的错误消息:
HTTP状态500 - 处理JSP页面时发生异常 第14行的/WEB-INF/jsp/assignStudent.jsp
输入例外报告
message处理JSP页面时发生异常 第14行的/WEB-INF/jsp/assignStudent.jsp
description服务器遇到阻止它的内部错误 完成此请求。
例外
org.apache.jasper.JasperException:处理发生异常 第14行的JSP页面/WEB-INF/jsp/assignStudent.jsp
11: </tr>
12: <tr>
13: <td>
14: <form:select path="studentMap" items="${studentMap}">
15: </form:select>
16: </td>
17: <td>
堆栈跟踪: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 根本原因
org.springframework.beans.NotReadablePropertyException:无效 property&#39; studentMap&#39; bean类[com.myapp.StudentCourse]:Bean property&#39; studentMap&#39;无法读取或具有无效的getter方法: getter的返回类型是否与参数类型匹配 设定装置? org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:726) org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:717) org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:99) org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:229) org.springframework.web.servlet.support.BindStatus。(BindStatus.java:120) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116) org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422) org.springframework.web.servlet.tags.form.SelectTag.writeTagContent(SelectTag.java:194) org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) org.apache.jsp.WEB_002dINF.jsp.assignStudent_jsp._jspx_meth_form_005fselect_005f0(assignStudent_jsp.java:267) org.apache.jsp.WEB_002dINF.jsp.assignStudent_jsp._jspx_meth_form_005fform_005f0(assignStudent_jsp.java:218) org.apache.jsp.WEB_002dINF.jsp.assignStudent_jsp._jspService(assignStudent_jsp.java:122)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
我对Spring MVC很陌生,所以我很欣赏这个建议!
答案 0 :(得分:1)
您没有显示StudentCourse课程,而是根据根异常
org.springframework.beans.NotReadablePropertyException: Invalid property 'studentMap' of bean class [com.myapp.StudentCourse]: Bean property 'studentMap' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
您的StudentCourse类没有studentMap
属性,或者它缺少它的setter或者它的名称不是setStudentMap
,所以解决方案是将studentMap属性添加到您的类并编写一个setter和getter遵循正确的命名规则(setStudentMap
和getStudentMap
)。
但是,如果您不希望在StudentCourse课程中拥有studentMap属性,则可以使用public ModelAndView(View view, java.util.Map model)构造函数并将StudentCourse,studentMap和courseMap对象传递给它。