完成了DELETE删除操作,最后我们一鼓作气 完成修改操作吧!
修改操作,点击修改功能的< a>标签后,在handler方法中根据id找到当前Employee的所有数据,放在request域中,转到input.jsp页面中,这样input.jsp就能直接显示原来的数据,而不是之前的注册界面啥内容都没有填写。修改完毕这时提交方法是PUT,需要写一个新的handler方法处理PUT操作,最后重定向到list.jsp即可。那这里需要注意的是,修改的时候不能修改lastName这个属性,所有修改界面不能显示这个text。
一、先写好list.jsp页面中的修改功能的< a>标签 的href和处理方法
<td><a href="emp/${emp.id}">Edit</a></td> //这里需要当前的id,方便根据id查找
这一步跳转到input.jsp并且是当前Employee的数据,但是不会显示lastName.
//以下这个方法的目的是当你想要修改的时候,显示出原始数据
@RequestMapping(value="/emp/{id}",method = RequestMethod.GET)
public String input(@PathVariable("id") Integer id ,Map<String,Object> map){
map.put("employee",employeeDao.get(id));
map.put("departments",departmentDao.getDepartments());
return "input";
}
二、input.jsp判断为修改还是添加操作
<c:if test="${employee.id==null}">
<!--Path 属性对应html表单标签的name属性值-->
LastName: <form:input path="lastName"/>
</c:if>
<c:if test="${employee.id!=null}">
<form:hidden path="id"/>
<%--对于_method 不能使用form:hidden标签,因为modelAtttibute 对应的bean中没有_method这个属性--%>
<input type="hidden" name="_method" value="PUT"/>
</c:if>
现在的input.jsp
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!--
1.WHY使用form标签呢?
可以更快速的开发出表单页面,而且可以更方便的进行表单值的回显
2.注意:
可以通过modelAttribute属性指定绑定的模型属性,
则默认为request域对象中读取command的表单的bean.
如果该属性值也不存在,则会发生错误。
-->
<form:form action="${pageContext.request.contextPath}/emp" method="POST