【问题标题】:Issue processing Spring MVC form with multiple dropdown menus使用多个下拉菜单处理 Spring MVC 表单的问题
【发布时间】:2015-02-05 01:01:06
【问题描述】:

我有一个带有两个下拉菜单的表格,用于选择学生和学生将要学习的课程。当我使用此表单加载页面时,我会收到将在下面包含的错误。

这是我的 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 页面时发生异常 /WEB-INF/jsp/assignStudent.jsp 第 14 行

输入异常报告

消息处理JSP页面发生异常 /WEB-INF/jsp/assignStudent.jsp 第 14 行

描述服务器遇到阻止它的内部错误 完成此请求。

异常

org.apache.jasper.JasperException:发生异常处理 JSP 页面 /WEB-INF/jsp/assignStudent.jsp 在第 14 行

 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: 无效 bean 类 [com.myapp.StudentCourse] 的属性“studentMap”:Bean 属性 'studentMap' 不可读或具有无效的 getter 方法: 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 还很陌生,所以非常感谢您的建议!

【问题讨论】:

    标签: java spring jsp spring-mvc servlets


    【解决方案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遵循正确的命名规则(setStudentMapgetStudentMap)。

    但是,如果您不希望 StudentCourse 类中包含 studentMap 属性,则可以使用 public ModelAndView(View view, java.util.Map model) 构造函数并传递您的 StudentCourse、studentMap 和 courseMap 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      相关资源
      最近更新 更多