ssm项目之员工修改

首先呢,点击修改要有个修改的模态框,和添加的差不多,用户名不能修改

<!-- 员工修改模态框 -->
    <!-- Modal -->
    <div class="modal fade" id="empUpdateModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title">员工修改</h4>
          </div>
          <div class="modal-body">
            <form class="form-horizontal">
              <div class="form-group">
                <label class="col-sm-2 control-label">empName</label>
                <div class="col-sm-10">
                    <p class="form-control-static" id="empName_update_static"></p>
                </div>
              </div>
             <div class="form-group">
                <label class="col-sm-2 control-label">email</label>
                <div class="col-sm-10">
                  <input type="text" name="email" class="form-control" id="email_update_input" placeholder="[email protected]">
                  <span class="help-block"></span>
                </div>
              </div>
             <div class="form-group">
                <label class="col-sm-2 control-label">gender</label>
                <div class="col-sm-10">
                  <label class="radio-inline">
                      <input type="radio" name="gender" id="gender1_update_input" value="M" checked> 男
                  </label>
                  <label class="radio-inline">
                      <input type="radio" name="gender" id="gender2_update_input" value="F"> 女
                  </label>
                </div>
              </div>

               <div class="form-group">
                    <label class="col-sm-2 control-label">deptName</label>
                    <div class="col-sm-4">
                    <select class="form-control" name="dId">

                    </select>
                    </div>
              </div>
            </form>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            <button type="button" class="btn btn-primary" id="emp_update_btn">更新</button>
          </div>
        </div>
      </div>
    </div>

到function build_emps_table(result)中添加个标识 (之前的代码已经加上了)

为button加上点击事件,因为是在ajax加载后才绑定上事件的,所以不能直接用click,用click是请求前就绑定,没用

解决方法:1、可以在创建按钮的时候绑定,但是要在原来的代码上再加上一堆

2、用jquery的on事件

//jquery新版没有live。使用on进行替代
    $(document).on("click", ".edit_btn",function() {
        //alert("edit");
        //弹出模态框
        //查询部门信息
         getDepts("#empUpdateModal select");
        //alert($(this).attr("edit-id"));
        //查处员工信息。
        //getEmp($(this).attr("edit-id"));

        //把员工 的 id 传递给模态框的更新按钮
        $("#emp_update_btn").attr("edit-id",$(this).attr("edit-id"));
        $("#empUpdateModal").modal({
            backdrop:"static"
        }); 

    });

接下来写查询员工

EmployeeController.java里加的方法

/**
     * 查询姓名
     */
    @RequestMapping(value="/emp/{id}", method=RequestMethod.GET)
    @ResponseBody
    public Msg getEmp(@PathVariable("id")Integer id) {
        System.out.println(id);
        Employee employee = employeeService.getEmp(id);
        return Msg.success().add("emp", employee);
    }

EmployeeService.java

/**
     * 按照员工id查询员工
     * @param id
     * @return
     */
    public Employee getEmp(Integer id) {
        Employee employee = employeeMapper.selectByPrimaryKey(id);
        return employee;
    }

index.jsp页面

//jquery新版没有live。使用on进行替代
    $(document).on("click", ".edit_btn",function() {
        //alert("edit");
        //弹出模态框
        //查询部门信息
         getDepts("#empUpdateModal select");
        //alert($(this).attr("edit-id"));
        //查处员工信息。
        getEmp($(this).attr("edit-id"));

        //把员工 的 id 传递给模态框的更新按钮
        $("#emp_update_btn").attr("edit-id",$(this).attr("edit-id"));
        $("#empUpdateModal").modal({
            backdrop:"static"
        }); 

    });
    //获取员工
    function getEmp(id) {
        $.ajax({
            url:"${APP_PATH}/emp/"+id,
            type: "GET",
            success: function(result) {
                var empData = result.extend.emp;
                $("#empName_update_static").text(empData.empName);
                $("#email_update_input").val(empData.email);
                $("#empUpdateModal input[name=gender]").val([empData.gender]);
                $("#empUpdateModal select").val([empData.dId]);
            }
        });
    }

在之前的function build_emps_table(result)已经加了id,所以直接用

这样就可以显示啦,接下来就是更新按钮的操作了

首先先给更新按钮加个id,方便传递参数

在点击显示模态框那里添加 (之前也添加过了)

EmployeeController.java

/**
     * 保存更新
     * @param employee
     * @return
     */
    @ResponseBody
    @RequestMapping(value="/emp/{empId}", method=RequestMethod.PUT)
    public Msg saveEmp(Employee employee) {
        //System.out.println(employee);
        employeeService.updateEmp(employee);
        return Msg.success();
    }

写成这样时与Employee.java里面的empId不对应,所以会更新不了

得写成这样

index.jsp的点击更新可以这样写

//点击更新,更新员工信息
    $("#emp_update_btn").click(function() {
        //验证邮箱是否合法
        //1、校验邮箱信息
        var email = $("#email_update_input").val();
        var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
        if(!regEmail.test(email)) {
            show_validate_msg("#email_update_input", "error", "邮箱格式不正确");
            return false;
        } else {
            show_validate_msg("#email_update_input", "success", "");
        }

        //发送 ajax 请求保存更新员工数据
        $.ajax({
            url:"${APP_PATH}/emp/" + $(this).attr("edit-id"),
            type: "POST",
            data:$("#empUpdateModal form").serialize()+"&_method=PUT",
            success:function(result) {
                //alert(result.msg);
                $("#empUpdateModal").modal("hide");
                to_page(currentPage);
            }
        });
    });

但是这个POST再带PUT有点别扭,但是直接改数据传不过去报错了

如果直接发送ajax=put的请求,Employee全是null,请求体中有数据,但是封装不了

原因:是tomcat的问题(具体情况可以查看源码)

1、将请求题中的数据封装成一个map

2、request.getParameter("")会从这个map中取值

3、SpringMVC封装pojo对象时会把pojo每个属性中的值request.getParameter("")

但是这个也获取不了

原因:Ajax发送PUT请求时,tomcat一看是PUT请求就不会封装请求数据为map,只有post才会

Spring提供了过滤器 HttpPutFormContentFilter

在web.xml配置

<filter>
      <filter-name>HttpPutFormContentFilter</filter-name>
      <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>HttpPutFormContentFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

测试下,成功了

index.jsp

//点击更新,更新员工信息
    $("#emp_update_btn").click(function() {
        //验证邮箱是否合法
        //1、校验邮箱信息
        var email = $("#email_update_input").val();
        var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
        if(!regEmail.test(email)) {
            show_validate_msg("#email_update_input", "error", "邮箱格式不正确");
            return false;
        } else {
            show_validate_msg("#email_update_input", "success", "");
        }

        //发送 ajax 请求保存更新员工数据
        $.ajax({
            url:"${APP_PATH}/emp/" + $(this).attr("edit-id"),
            type: "PUT",
            data:$("#empUpdateModal form").serialize(),
            success:function(result) {
                //alert(result.msg);
                $("#empUpdateModal").modal("hide");
                to_page(currentPage);
            }
        });
    });

修改功能就做好啦!

时间: 2024-10-09 21:18:45

ssm项目之员工修改的相关文章

SSM项目整合基本步骤

SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的. Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情.然而, Spring 的用途不仅限于服务器端的开

SSM项目整合

SSM项目整合基本步骤 SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的. Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情.然而, Spring 的

简单搭建一个SSM项目

简单搭建一个用户管理的SSM项目框架,虽然也能用servlet+jdbc搭建更简单的,不过个人感觉工作中更多用的ssm框架项目,这里就简单用ssm来搭建需要的项目吧. 准备工具:eclipse.jdk1.7.Mysql.maven.tomcat.(请先确定计算机本身已安装好前面几个工具,myeclipse自动集成maven,eclipse需要自己先配置,具体配置请自行百度) 这里先把项目的目录结构显示下 好的,现在开始 File->new->other->maven project Ne

git 提交新项目,并修改用户名以及提交邮箱 &nbsp;

本地有一个项目myweb,里面有.git目录. 线上新建了git仓库,gitweb. 现在要把myweb提交到线上. 直接在myweb目录下,以免冲突,提交不了.所以我用了copy的方法. 1.先把项目myweb的 .git目录,删除. 2.在/data目录下,git clone线上的仓库. 3.cp -r /data/myweb/* /data/gitweb 4.进入gitweb目录 5.git add . 6.git commit -m 'first commit' 7.git pull 8

IntelliJ IDEA通过maven构建ssm项目找不到mapper

idea运行ssm项目的时候一直报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 原因: 部署后target里面没有mybatis的配置文件*.xml 解决方法:在pom.xml中通过maven强制将*.xml文件一起发布 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&

iOS开发项目篇—26修改UITabBar的系统设置

IOS开发项目篇—26修改UITabBar的系统设置 一.简单说明 1.在ios6和ios7两种系统中的现实效果 2.要求实现的效果(在ios6和ios7中基本一致) 二.UITabBar的设置和结构 1.尝试调整UITabBar 通过下面的方式,查看UITabBar内部的子控件 查看子控件继承自: 说明:UItabBarButton:继承自UIControl UIButton:继承自UIControl 打印查看每个子控件的内部结构 2.修改系统属性 注意:在ios6系统下 1 // 2 //

关于项目中批量修改数据

一.在项目中批量修改数据时应该写一条Update的Sql语句来执行,不能先将所要修改的数据筛选出来,然后再遍历修改. 原因: 1.这样只操作一次数据库,而后者需要操作无数次,性能很差. 2.绕圈子.需要修改数据时直接修改就行,不需要先全部查出来再逐条修改. 3.修改数据时时可以使用join的,例如: 1 update acc set acc.Creator = '滕晓梅' 2 from Accidents acc 3 inner join CompensationCase cc on acc.I

Maven 搭建 SSM 项目 (oracle)

简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件夹. 解决方法: ① : 在项目上右键选择properties,然后点击java build path,在Librarys下,编辑JRE System Library,选择workspace default jre就可以了. (推荐使用这种) ② :手动创建 目录.切换视图采用Navigator视图

java SSM项目搭建-- The server time zone value &#39;?й???????&#39; is unrecognized or represents more than one time zone

出现  错误 The server time zone value '?й???????' is unrecognized or represents more than one time zone 找到jdbc 数据库连接字符串, 加上?serverTimezone=UTC ?serverTimezone=UTC <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManager