springmvc实例之修改雇员相关信息(四)

时间:2022-07-23
本文章向大家介绍springmvc实例之修改雇员相关信息(四),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

接上一节。

  • 首先是在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的增删改查基本操作就已经全部完成了。