无法通过Spring MVC中的ajax调用绑定ModelMap

时间:2014-12-17 08:39:18

标签: java jquery ajax spring spring-mvc

我的JSP页面:

<form action="manageparentexamforchildren.htm" class="form-horizontal form-bordered" >
              <div class="form-body">
                <div class="form-group">
                   <label class="control-label col-md-1"><spring:message code="label.parent.children"/></label>
                              <div class="col-md-3">
                                <select name="parent.children" class="form-control" id="children" required="true" >
                                    <option value="">-<spring:message code="label.select"/>-</option>
                                    <c:forEach items="${studentsOfThisParent}" var="student">
                                       <option value="${student.id}">${student.firstName} ${student.lastName}</option>
                                    </c:forEach>
                                </select>
                              </div>
                </div>

                </div>
              <div class="form-actions fluid">
                <div class="row">
                  <div class="col-md-12">
                    <div class="col-md-offset-3 col-md-9">
                      <button type="submit" class="btn blue"><i class="icon-ok"></i><spring:message code='button.search'/></button>
                      <button type="button" onclick="javascript:history.go(-1);" class="btn red default"><spring:message code='button.cancel'/></button>
                    </div>
                  </div>
                </div>
              </div>
            </form>


            <c:forEach items="${modelList}" var="examination">
    <tr>
      <td><b><spring:message code="label.examination.schoolexam"/></b>:<c:out value="${examination.schoolExam.name}" /></td>
    </tr>

    <table border="1" width="1000" height="200" class="table table-bordered table-hover"> 
   <thead> <tr><th class="active"><spring:message code="label.examination.subjects"/></th><th class="active"><spring:message code="label.exam.Date"/></th><th class="active"><spring:message code="label.exam.maxmarks"/></th></tr></thead>
    <tbody>
    <c:forEach items="${examination.examinationSubjects}" var="examinationSubject" varStatus="status">
    <tr>
    <td class="success"><c:out value="${examinationSubject.subjects.name}" /></td>
    <td class="success" ><c:out value="${examinationSubject.date}" /></td>
    <td class="success"><c:out value="${examinationSubject.maxMarks}" /></td>

    </tr>
    </c:forEach>
    </tbody>
    </table>

  </c:forEach>

我的控制者:

@RequestMapping(value="/manageparentexam.htm", method=RequestMethod.GET)
    public String manageparentexam(ModelMap modelMap,HttpServletRequest request )
    {

        Parent parent = parentService.getParentById(getLoggedInUser().getId());
        List <Student> studentsOfThisParent=parentService.getStudentsOfThisParent(getLoggedInUser().getId());
        Student student=null;

            student=parent.getStudentAdmission().get(0).getStudent();
            modelMap.addAttribute("modelList",student.getStudentAdmission().getClasses().getExamination());


        setupCreate(modelMap, request);
        return "tileDefinition.manageparentexam-"+getNameSpace();
    }



    @RequestMapping(value="/manageparentexamforchildren.htm", method=RequestMethod.GET)
        public void manageparentexamforchildren(ModelMap modelMap,HttpServletRequest request )
        {
            Long studentId=Long.valueOf(request.getParameter("parent.children"));
            modelMap.addAttribute("modelList",studentService.getById(studentId).getStudentAdmission().getClasses().getExamination());
            setupCreate(modelMap, request);
         }

这里我的要求是,当我选择一个选择框中的值时,表格应该通过ajax更新,这里我无法通过ajax调用绑定模型列表。 。 。

1 个答案:

答案 0 :(得分:1)

我要做的是将另一个jsp中的表分开。像这样的yourTable.jsp

        <table border="1" width="1000" height="200" class="table table-bordered table-hover"> 
             <thead> <tr><th class="active"><spring:message code="label.examination.subjects"/></th><th class="active"><spring:message code="label.exam.Date"/></th><th class="active"><spring:message code="label.exam.maxmarks"/></th></tr></thead>
<tbody>
     <c:forEach items="${examination.examinationSubjects}" var="examinationSubject" varStatus="status">
<tr>
<td class="success"><c:out value="${examinationSubject.subjects.name}" /></td>
<td class="success" ><c:out value="${examinationSubject.date}" /></td>
<td class="success"><c:out value="${examinationSubject.maxMarks}" /></td>

</tr>
</c:forEach>
</tbody>
</table>

然后将这个jsp包含在div中的主mapge中

    <div id="yourTable"> 
       <c:jsp include="yourTable.jsp/>
   </div>

然后在你的选择中你必须添加一个监听器,当一些东西发生变化时,你需要让一个JQuery加载重新加载表再次从控制器渲染表,你想要的所有更改

              $('#yourTable').load("url of your controller where you will render yourTable.jsp");

在控制器中你将渲染yourTable.jsp,你将在ModelAndView对象中添加examSubject