接上一节。
- 首先是在List.jsp中点击编辑,然后在EmployeeHandler.java中有一个toEditEmployeePage方法,该方法接收传入过来的id,并把相关信息传给add.jsp界面。
- 由于springmvc的form标签会自动进行回显,因此传入给add.jsp一个根据id得到的employee对象以及获取departments对象。
- 可以和增加雇员信息共用一个add.jsp界面,但要进行相应的修改。
- 我们默认是不修改lastname属性。
- 为了使得更新时默认lastname属性保留原来的值,需要使用的ModelAttribute属性。
首先是在EmployeeHandler.java中编写toEditEmployeePage方法:
@RequestMapping(value="/emp/{id}",method=RequestMethod.GET) public String toEditEmployeePage(@PathVariable("id") Integer id, Map<String,Object> map) { map.put("employee", employeeDao.get(id)); map.put("departments", departmentDao.getDepartments()); return "add"; }
然后是在add.jsp中进行相应的修改:
<form:form action="${pageContext.request.contextPath}/emp" method="POST" modelAttribute="employee"> <!-- path属性对应html标签的name属性 --> <c:if test="${employee.id == null}"> LastName: <form:input path="lastName"/> </c:if> <c:if test="${employee.id != null}"> <form:hidden path="id"/> <input type="hidden" name="_method" value="PUT"/> </c:if>
首先是修改提交的路径:${pageContext.request.contextPath}/emp。一定要修改这。然后是对传过来的employee的id进行判断,如果是空,则说明是添加操作,所以将lastname输入框添加到里面,如果不为空,则表明是修改操作,则需要隐藏一个id,用于传给后台用于获取原本雇员的名字。接着设置一个隐藏域,用于将POST请求转换为PUT请求。
接下来在EmployeeHandler.java中编写更新方法update:
@ModelAttribute public void getEmployee(@RequestParam(value="id",required=false) Integer id, Map<String,Object> map) { if(id != null) { map.put("employee", employeeDao.get(id)); } } @RequestMapping(value="/emp",method=RequestMethod.PUT) public String update(Employee employee) { employeeDao.save(employee); return "redirect:/emps"; }
这里为了获得原有的lastname,需要用@ModelAttribute直接标识一个获得雇员信息的方法。
启动服务器:
点击最后一个Edit:
并修改相应信息:
点击提交:
相关信息已被修改,说明修改操作是成功的。 至此,springmvc的增删改查基本操作就已经全部完成了。
原文地址:https://www.cnblogs.com/xiximayou/p/12184807.html
时间: 2024-11-10 13:07:40