SSM:十、CRUD的修改员工功能

思路:1、先得到员工的id,在服务器端发送/get/{id}请求,请求的方式为GET,在前端发送ajax请求得到服务器端传来的数据,依据empId将员工的数据取出,在模态框中加以显示。

2、在对在模态框中的输入的数据进行保存,在服务器段发送/save/{empId}请求,请求方式为PUT,然后再前端发送ajax请求得到服务器的json数据,进行保存操作。

注意事项:在tomcat服务器中,在用ajax发送请求时,不能直接使用type为PUT的请求类型,因为tomcat无法识别进行封装成请求。

解决方式:①在ajax请求中,使用将POST请求转换成PUT请求,–》type:“POST”
data:xxxx + “&_method=PUT”,使用这种方式可以发送为PUT请求。

②使用springMVC封装的拦截器,可以直接发送PUT请求,在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>

在JSP文件中增加员工修改的模态框

    <!--更新Modal开始-->
    <div class="modal fade" id="myUpdateModal" 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 for="add_emp_Name" class="col-sm-2 control-label">姓名</label>
                            <div class="col-sm-6">
                                <p class="form-control-static" id="update_emp_static"></p>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="add_emp_Email" class="col-sm-2 control-label">email</label>
                            <div class="col-sm-6">
                                <input type="email" name="email" class="form-control" id="update_emp_Email" placeholder="请输入邮箱">
                                <span class="help-block"></span>
                            </div>
                        </div>

                        <!--内联单选按钮-->
                        <div class="form-group">
                            <label for="add_emp_Email" class="col-sm-2 control-label">性别</label>
                            <div class="col-sm-8">
                                <label class="radio-inline col-sm-2">
                                    <input type="radio" name="gender" id="update_emp_gender1" value="M" checked="checked"></label>
                                <label class="radio-inline col-sm-2">
                                    <input type="radio" name="gender" id="update_emp_gender2" value="F"></label>
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="add_emp_Email" class="col-sm-2 control-label">部门</label>
                            <div class="col-sm-4">
                                <select class="form-control col-sm-4" 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="update_button">更新</button>
                </div>
            </div>
        </div>
    </div>
    <!--更新Modal结束-->

在服务器后端得到依据员工id得到员工的信息以及保存员工的具体操作。

EmpServicer层 (依据id得到员工和更新员工)

  //根据员工id查找对应的员工
    public Employee getEmp(Integer id) {
        Employee employee = employeeMapper.selectByPrimaryKey(id);
        return  employee;
    }
	/**
     *
     * 更新员工
     * @param employee
     */
    public void updateEmp(Employee employee) {
        employeeMapper.updateByPrimaryKeySelective(employee);
    }

empController层

	/**
     * 得到员工信息
     * -->/get/{id=}
     */
    @ResponseBody
    @RequestMapping(value = "/get/{id}",method = RequestMethod.GET)
    //根据路径来将id值传入
    public Msg getEmp (@PathVariable("id") Integer id) {
        Employee employee = employeeService.getEmp(id);
        return Msg.success().add("emp",employee);
    }


    /**
     * 在tomcat中不会封装PUT请求,用ajax发送请求时不可以直接用type:PUT对数据进行传递
     * 解决方案:1、在data上后面加上+"&_method=PUT",将POST请求转为PUT请求
     *          2、 用springMVC里封装的方法进行拦截,在web.xml上配置拦截属性
     * @param employee
     * @return
     */
    //保存更新的员工信息
    @ResponseBody
    @RequestMapping(value = "/save/{empId}",method = RequestMethod.PUT)
    public Msg saveEmp (Employee employee) {
        employeeService.updateEmp(employee);
        return Msg.success();
    }

得到员工的发送的ajax方法

先给编辑的按钮添加点击监听,在打开模态框之间执行得到部门的信息以及与员工的信息。

	//更新
    //利用样式进行过滤,添加on进行click监听
    $(document).on('click','.edit_btn',function () {
        //1、得到部门信息
        getDepts('#myUpdateModal select')
        //2、得到员工的信息,找到对应的属性,将id取出。
        getEmp($(this).attr("edit-id"));
        //把员工id传入模态框的更新按钮上
        $('#update_button').attr('update-id', $(this).attr("edit-id"));
        //console.log($(this).attr("edit-id"))
        //弹出静态框
        $('#myUpdateModal').modal({
            backdrop : 'static'
        })
    })

    //更新员工
    function getEmp(id) {
        $.ajax({
            url:'${APP_PATH}/get/'+id,
            type:"GET",
            success:function (result) {
                //测试返回的数据
               // console.log(result);
                //得到emp的值
                var empData = result.extend.emp;
                $('#update_emp_static').text(empData.empName);
                $('#update_emp_Email').val(empData.email);
                $('#myUpdateModal input[name=gender]').val(empData.gender);
                $('#myUpdateModal select').val(empData.dId);
            }
        })
    }

发送ajax将数据进行保存

在保存之前,依旧对email的信息进行正则表达式检验。

  //更新员工
    $('#update_button').click(function () {
        //1、判断员工的正则表示式
        var empEmail = $('#update_emp_Email').val();
        var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
        if(!regEmail.test(empEmail)) {
            show_invalid('#update_emp_Email','error','邮箱格式不正确!');
           // console.log("格式错误!")
            return false;
        }else {
            show_invalid('#update_emp_Email', 'success', '')
        }
        var empId = $(this).attr('update-id');
        //console.log(empId)
        //2、发送ajax请求保存员工信息
        $.ajax({
            url:'${APP_PATH}/save/' + empId ,
            type:"PUT",
            data:$('#myUpdateModal form').serialize(),
            success:function (result) {
              alert(result.message);
                //1、关闭模态框
                $('#myUpdateModal').modal('hide');
              //2、回到当前页数-->得到当前的pageNum
                to_Page(current_page);
            }
        })
    })

具体的运行结果:

SSM:十、CRUD的修改员工功能感情之事不能强求,好好照顾自己。