简体   繁体   中英

Spring MVC: Unable to bind data to my modelAttribute when trying to edit the form

I am trying to edit a submitted form but I am facing difficulties in doing so the problem is when I am submitting the form after editing null is being sent.I have been trying to get rid of this by myself but alas I have not been able to so.Please help me out.

My controller(only significant part)

@RequestMapping(value = "/registerstudentProcess", method = RequestMethod.POST)
public ModelAndView addStudent(HttpServletRequest request, @ModelAttribute("add_student") Student user) {
    userService.registerStudent(user, request.getParameter("password"));
    ModelAndView mav = new ModelAndView("addedstudent");
    mav.addObject("adminsession");
    mav.addObject("user", user);
    mav.addObject("success_msg", user.getId() + " has been successfully added as an Student");
    return mav;
}
@RequestMapping(value = "/editstud",method=RequestMethod.GET)
public ModelAndView editstud(HttpServletRequest request) {
    ModelAndView mav = new ModelAndView("editstudent");
//  mav.addObject("upd", new Student());
    mav.addObject("adminsession");
    mav.addObject("olduser", userService.editStudent(Integer.parseInt(request.getParameter("nayastud"))));
    mav.addObject("batches", userService.getAllBatches());
    return mav;
}

@RequestMapping(value = "/updatestud", method = RequestMethod.POST)
public ModelAndView updatestud(HttpServletRequest request, @ModelAttribute("olduser") Student stup) {
    ModelAndView mav = new ModelAndView("addedstudent");
    mav.addObject("adminsession");
    mav.addObject("user", userService.updateStudent(stup));
    mav.addObject("success_msg", stup.getId() + " has been successfully added as an Student");
    return mav;
}

Model:Student.java

package project.ams.model;
public class Student {
    private Integer id;
    private String email;
    private String name;
    private String batch;
    private String session;
    private String address;
    private String contact;
    private String status;
    //with proper getters and setters
}

addedstudent.jsp

<table class="table table-bordered table-condensed" align="center">
  <tr>
    <th colspan="2" style="text-align: center;">DETAILS</th>
  <tr>
  <tr>
    <td><label>Id</label></td>
    <td>${user.id}</td>
  </tr>
  <tr>
    <td><label>Name</label></td>
    <td>${user.name}</td>
  </tr>
  <tr>
    <td><label>Email</label></td>
    <td>${user.email}</td>
  </tr>
  <tr>
    <td><label>Batch</label></td>
    <td>${user.batch}</td>
  </tr>
  <tr>
    <td><label>Session</label></td>
    <td>${user.session}</td>
  </tr>
  <tr>
    <td><label>Address</label></td>
    <td>${user.address}</td>
  </tr>
  <tr>
    <td><label>Phone Number:</label></td>
    <td>${user.contact}</td>
  </tr>
</table>
<table class="table table-condensed" align="center">
  <tr>
    <td>
    <form:form id="editForm" action="editstud" method="post">
    <input type="hidden" name="nayastud" value="${user.id}"/>
    <button name="register"
        class="btn btn-default">Edit Details</button>
        </form:form>
        </td>
    <td>
    <button onclick="location.href='admhome'"
        class="btn btn-default">Back To Home</button></td>
  </tr>
</table>

editstudent.jsp

<form:form id="regForm" modelAttribute="olduser" action="updatestud"
    method="post">
  <div class="form-group">
    <form:label path="id">Enrollment Number</form:label>
    <form:input path="id" name="id" id="id" class="form-control"
      value="${olduser.id}" disabled="true" />
  </div>
  <div class="form-group">
    <form:label path="name">Name</form:label>
    <form:input path="name" name="name" id="name" class="form-control"
      value="${olduser.name}" />
  </div>
  <div class="form-group">
    <form:label path="email">Email</form:label>
    <form:input path="email" name="email" id="email"
      class="form-control" value="${olduser.email}" />
  </div>
  <div class="form-group">
    <form:label path="batch">Batch</form:label>
    <form:select path="batch" name="batch" id="batch"
      class="form-control">
      <option value="${olduser.batch}" selected></option>
      <c:forEach var="bat" items="${batches}">
        <form:option path="batch" value="${bat}">${bat}</form:option>
      </c:forEach>
    </form:select>
  </div>
  <div class="form-group">
    <form:label path="session">Session</form:label>
    <form:input path="session" name="session" id="session"
      class="form-control" value="${olduser.session}" />
  </div>
  <div class="form-group">
    <form:label path="address">Address</form:label>
    <form:input path="address" name="address" id="address"
      class="form-control" value="${olduser.address}" />
  </div>
  <div class="form-group">
    <form:label path="contact">Phone</form:label>
    <form:input path="contact" name="contact" id="contact"
      class="form-control" value="${olduser.contact}" />
  </div>
  <div class="form-group">
    <input type="hidden" name="password" value="Hello@123" />
    <form:input type="hidden" path="status" name="status" value="a" />
  </div>
  <button id="register" name="register" class="btn btn-default">Update</button>
</form:form>

Edit 1 Added Screenshots(Sorry not able to post more screenshots due to reputation issues.)

Here I am changing the address and trying to update its value in the db.

Editing Student Info

Error here.Getting null object back from the edit page

<form:form id="editForm" action="editstud" method="post">

Expects a post handler

@RequestMapping(value = "/editstud",method=RequestMethod.GET)

is defined to accept only GET requests.

Try changing edit student method to

@RequestMapping(value = "/editstud",method=RequestMethod.GET)
public ModelAndView editstud(@RequestParam String nayastud) {
    ModelAndView mav = new ModelAndView("editstudent");
    mav.addObject("adminsession");
    mav.addObject("olduser", userService.editStudent(Integer.parseInt(request.getParameter("nayastud"))));
    mav.addObject("batches", userService.getAllBatches());
    return mav;
}

当您发送获取请求以获取edit_student时,您正在通过请求参数传递值,您应该使用@PathVariable@RequestParam访问此值。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM