专栏首页数据分析与挖掘springmvc实例之修改雇员相关信息(四)

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mybatis文件映射之利用association进行关联查询(二)

    说明:在resultMap中使用association标签,property属性对应着Employee中的成员属性的名称,javaType对应着该成员属性的类型...

    绝命生
  • mybatis文件映射之关联查询初探(一)

    其中tbl_employee表中的d_id关联tbl_department表中的id字段

    绝命生
  • springboot开发之修改员工

    3、编辑界面和新增界面可以共用一个界面。根据emp是否为空来判断是新增还是编辑,如果不为空则显示相关信息。

    绝命生
  • WAF安全拦截绕过思路和手法

    注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

    WeiyiGeek
  • Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。

    信安之路
  • 省市县,区的查询(通过区开始)(导出的接口实现)

    wfaceboss
  • 【leetcode两题选手】MySQL类题目(八)

    某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。

    看、未来
  • 「数据库」sql刷题(No.6)

    Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。

    八点半的Bruce、D
  • pt-osc在线重建表导致死锁的分析及对应的优化方案

    在业务低峰通过pt-osc在线做DDL期间出现死锁,导致业务的SQL被回滚了,对应用不友好。 本案例死锁发生的场景:pt-osc拷贝最后一个chunk-siz...

    老叶茶馆
  • 浅谈python中的多线程和多进程(二)

    前文《浅谈python中的多线程和多进程》中我们分享过一个例子,就是分别利用python中的多线程和多进程来解决高运算量的任务,从中看出二者的一些区别。其中一点...

    一只羊

扫码关注云+社区

领取腾讯云代金券