CRUD(22):新增-保存添加的数据

一、给保存按钮添加一个id

<button type="button" class="btn btn-primary" id="emp_save_btn">保存</button>

二、规范URI

/emp/{id} GET查询员工
/emp POST员工
/emp/{id} PUT员工
/emp/{id} DELETE员工

三、、在EmployeeController中新定义一个保存的方法。

       //保存员工

       @RequestMapping(value="/emp",method=RequestMethod.POST)

       @ResponseBody

       public Msg saveEmp(Employee employee) {

             

             employeeService.saveEmp(employee);

             return Msg.success();

             

       }

       


四、在EmployeeService中新增加一个保存employee到数据库的方法。

       //增加员工

       public void saveEmp(Employee employee) {

             employeeMapper.insertSelective(employee);

       }

四、jquery的serialize()方法

官方文档解释

serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。

序列化的字符串,用于ajax请求。

五、给按钮绑定事件

             //点击保存按钮

             $("#emp_save_btn").click(function() {

                    //1.模态框中的数据提交给服务器进行保存;

                    //2.发送ajax请求保存员工;

                    $.ajax({

                           url : "${APP_PATH}/emp",

                           type : "POST",

                           data : $("#empAddModal form").serialize(),

                           success : function(result) {

                           alert(result.msg);

                           }

                    });



             });


六、点击保存后弹出提示框,提示处理成功
1657256b3f07b191a130f8431e51112f.png

七、保存成功以后关闭模态框
官方文档关闭模态框

$("#empAddModal").modal('hide');

八、保存成功以后跳到最后一页显示添加的数据

①新增加一个变量表示总记录数

var totalRescord;


②给变量赋值

totalRecord = result.extend.pageInfo.total;

③去最后一条记录的页数,记录数肯定比总页码大

to_page(totalRecord);

九、源代码

<%@ page language="java" contentType="text/html; charset=UTF-8"

       pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>员工列表</title>

<!-- 拿到当前项目路径,以/开始,不以/结束 -->

<%

       pageContext.setAttribute("APP_PATH", request.getContextPath());

%>



<!-- 引入jquery -->

<script type="text/javascript"

       src="${APP_PATH }/static/js/jquery-1.12.4.min.js"></script>

<!-- 引入Bootstrap样式 -->

<link

       href="${APP_PATH }/static/bootstrap-3.3.7-dist/css/bootstrap.min.css"

       rel="stylesheet">

<script

       src="${APP_PATH 
}/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

</head>

<body>





       <!-- 新增的modal -->

       <div class="modal fade" id="empAddModal" 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" id="myModalLabel">新增员工</h4>

                           </div>

                           <div class="modal-body">

                                 <form class="form-horizontal">

                                        <div class="form-group">

                                               <label for="empName_add_input" 
class="col-sm-2 control-label">empName</label>

                                               <div class="col-sm-10">

                                                     <input type="text" 
class="form-control" name="empName"

                                                            id="empName_add_input" placeholder="empName">

                                               </div>

                                        </div>

                                        <div class="form-group">

                                               <label for="email_add_input" 
class="col-sm-2 control-label">email</label>

                                               <div class="col-sm-10">

                                                     <input type="text" 
class="form-control" name="email"

                                                            id="email_add_input" 
placeholder="hello123@qq.com">

                                               </div>

                                        </div>



                                        <div class="form-group">

                                               <label for="gender_add_input" 
class="col-sm-2 control-label">性别</label>

                                               <div class="col-sm-10">

                                                     <label 
class="radio-inline"> <input type="radio"

                                                            name="gender" 
id="gender1_add_input" value="m"

                                                            checked="checked"> 
男

                                                     </label> <label 
class="radio-inline"> <input type="radio"

                                                            name="gender" 
id="gender1_add_input" value="f"> 女

                                                     </label>

                                               </div>

                                        </div>



                                        <div class="form-group">

                                               <label class="col-sm-2 
control-label">deptName</label>

                                               <div class="col-sm-4">

                                                     <!-- 部门提交部门ID即可 -->

                                                     <select 
class="form-control" name="dId" id="dept_add_select">

                                                     </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_save_btn">保存</button>

                           </div>

                    </div>

             </div>

       </div>





       <!-- 搭建显示页面 -->



       <div class="container">



             <!-- 标题 -->

             <div class="row">

                    <div class="col-md-12">

                           <h1>SSM-CRUD</h1>

                    </div>

             </div>



             <!-- 按钮 -->

             <div class="row">

                    <div class="col-md-4 col-md-offset-8">

                           <button class="btn btn-primary" 
id="emp_add_modal_btn">新增</button>

                           <button class="btn btn-danger">删除</button>

                    </div>

             </div>



             <!-- 显示表格数据 -->

             <div class="row">

                    <div class="col-md-12">

                           <table class="table table-hover" id="emps_table">

                                 <thead>

                                        <tr>

                                               <th>#</th>

                                               <th>empName</th>

                                               <th>gender</th>

                                               <th>email</th>

                                               <th>deptName</th>

                                               <th>操作</th>

                                        </tr>

                                 </thead>

                                 <tbody></tbody>

                           </table>

                    </div>

             </div>



             <!-- 显示分页 -->

             <div class="row">

                    <!-- 分页文字信息 -->

                    <div class="col-md-6" id="page_info_area"></div>

                    <!-- 分页条信息 -->

                    <div class="col-md-6" id="page_nav_area"></div>

             </div>

       </div>



       <script type="text/javascript">

       <!--页面加载完成以后直接发送一个ajax请求,拿到分页数据-->

             var totalRescord;

             $(function() {

                    to_page(1);

             });



             function to_page(pn) {

                    $.ajax({

                           url : "${APP_PATH}/emps",

                           data : "pn=" + pn,

                           type : "GET",

                           success : function(result) {

                                 //console.log(result);

                                 //1.解析并显示员工数据

                                 build_emps_table(result);

                                 //2.解析并显示分页信息

                                 build_page_info(result);

                                 //3.解析并显示分页条

                                 build_page_nav(result);

                           }

                    });

             }



             //解析显示员工数据

             function build_emps_table(result) {



                    //首先清空原来的emps_table tbody

                    $("#emps_table tbody").empty();



                    var emps = result.extend.pageInfo.list;

                    $.each(emps, function(index, item) {



                           var empIdTd = $("<td></td>").append(item.empId);

                           var empNameTd = $("<td></td>").append(item.empName);

                           var genderTd = $("<td></td>").append(

                                        item.gender == 'm' ? "男" : "女");

                           var emailTd = $("<td></td>").append(item.email);

                           var deptNameTd = $("<td></td>")

                                        .append(item.department.deptName);



                           var editBtn = $("<button></button>").addClass(

                                        "btn btn-info btn-sm").append(

                                        $("<span></span>").addClass(

                                                     "glyphicon 
glyphicon-pencil")).append("编辑");

                           var delBtn = $("<button></button>").addClass(

                                        "btn btn-danger btn-sm").append(

                                        $("<span></span>")

                                                     .addClass("glyphicon 
glyphicon-trash")).append(

                                        "删除");

                           var btnTd = $("<td></td>").append(editBtn).append(" 
").append(

                                        delBtn);



                           //append方法执行完成以后还是返回原来的元素

                           $("<tr></tr>").append(empIdTd).append(empNameTd).append(

                                        genderTd).append(emailTd).append(deptNameTd).append(

                                        btnTd).appendTo("#emps_table tbody");

                    });

             }



             //显示分页信息

             function build_page_info(result) {

                    //首先清空原来的

                    $("#page_info_area").empty();

                    $("#page_info_area").append(

                                 "当前第" + result.extend.pageInfo.pageNum + "页 
共"

                                               + result.extend.pageInfo.pages + 
"页 共"

                                               + result.extend.pageInfo.total + 
"条记录");

                    totalRecord = result.extend.pageInfo.total;



             }



             //显示分页条  

             function build_page_nav(result) {

                    //首先清空原来的

                    $("#page_nav_area").empty();

                    var ul = $("<ul></ul>").addClass("pagination");

                    var firstPageLi = 
$("<li></li>").append($("<a></a>").append("首页"))

                                 .attr("href", "#");



                    var prePageLi = $("<li></li>").append(

                                 $("<a></a>").append("&laquo;"));



                    if (result.extend.pageInfo.hasPreviousPage == false) {

                           prePageLi.addClass("disabled");

                    } else {

                           prePageLi.click(function() {

                                 to_page(result.extend.pageInfo.pageNum - 1);

                           });

                    }

                    var nextPageLi = $("<li></li>").append(

                                 $("<a></a>").append("&raquo;"));



                    if (result.extend.pageInfo.hasNextPage == false) {

                           nextPageLi.addClass("disabled");

                    } else {

                           nextPageLi.click(function() {

                                 to_page(result.extend.pageInfo.pageNum + 1);

                           });

                    }

                    var lastPageLi = 
$("<li></li>").append($("<a></a>").append("末页"))

                                 .attr("href", "#");



                    firstPageLi.click(function() {

                           to_page("1");

                    });

                    lastPageLi.click(function() {

                           to_page(result.extend.pageInfo.pages);

                    });



                    //添加首页和前一页的显示

                    ul.append(firstPageLi).append(prePageLi);

                    $.each(result.extend.pageInfo.navigatepageNums, 
function(index,

                                 item) {

                           var numLi = 
$("<li></li>").append($("<a></a>").append(item));

                           //页码按钮选中变蓝

                           if (result.extend.pageInfo.pageNum == item) {

                                 numLi.addClass("active");

                           }

                           numLi.click(function() {

                                 to_page(item);

                           });

                           //添加页码显示

                           ul.append(numLi);

                    });

                    //添加下一页和末页的显示

                    ul.append(nextPageLi).append(lastPageLi);



                    var navEle = $("<nav></nav>").append(ul);

                    navEle.appendTo("#page_nav_area");



             }



             //点击新增按钮

             $("#emp_add_modal_btn").click(function() {



                    //发送ajax请求,显示部门信息,出现在下拉列表中

                    getDepts();

                    //弹出模态框

                    $("#empAddModal").modal({

                           backdrop : "static"

                    });

             });



             function getDepts() {

                    $.ajax({

                           url : "${APP_PATH}/depts",

                           type : "GET",

                           success : function(result) {

                                 //显示部门信息在下拉列表中

                                 $.each(result.extend.depts, function() {

                                        var optionEle = 
$("<option></option>").append(

                                                     this.deptName).attr("value", this.deptId);

                                        optionEle.appendTo("#dept_add_select");

                                 });

                           }

                    });

             }



             //点击保存按钮

             $("#emp_save_btn").click(function() {

                    //1.模态框中的数据提交给服务器进行保存;

                    //2.发送ajax请求保存员工;

                    $.ajax({

                           url : "${APP_PATH}/emp",

                           type : "POST",

                           data : $("#empAddModal form").serialize(),

                           success : function(result) {

                                 alert(result.msg);

                                 //关闭模态框

                                 $("#empAddModal").modal('hide');

                                 //来到最后一页显示刚才保存的数据

                                 //发送ajax请求显示最后一页数据

                                 to_page(totalRecord);



                           }

                    });



             });

       </script>

</body>

</html>


posted on 2021-02-16 00:13  northwest  阅读(63)  评论(0)    收藏  举报

导航