当前位置:网站首页>修改市场活动表

修改市场活动表

2022-06-09 08:33:00 素心如月娅

接上一篇:SSM实现选中删除

1. 要实现的功能

  1. 选中某一行数据,点击修改按钮,弹出模态框,模态框中显示的是当前被选中行的信息

在这里插入图片描述

  1. 弹出模态框,并显示被选中行的数据,注意所有者是下拉列表,默认显示当前行的所有者

在这里插入图片描述
3. 修改并保存

在这里插入图片描述
4. 保存修改前有验证

在这里插入图片描述
5. 数据正确后点击保存,弹出提示:修改成功,点击确定,关闭弹出框和模态框,重新刷新页面
在这里插入图片描述
在这里插入图片描述

2. 分析

  1. body页面写个修改市场活动的模态框
  2. script写js代码,选择器.click(function(){}),为修改按钮添加事件
  3. 点击修改按钮弹出模态框,先判断是否选中checkbox
  4. 如果选中了,在弹出模态框前获取checkbox的value,即activityId,把id通过$.ajax({})的data:{id:id}传给Controller层的方法,返回的数据通过:选择器.val(“xxx”),显示到模态框的input标签中
  5. 点击保存:选择器.click(function(){}),为模态框的保存按钮添加事件
  6. 先获取所有input的value值,通过$.ajax({})的data:{}传给Controller层的方法
  7. 在ActivityController.java中定义两个方法:(1)根据id查市场活动表,参数为String类型,返回值为Activity类型;(2)修改市场活动表,参数为Activity类型,返回值为int类型
  8. 下面从Service+Dao实现这两个方法

3. Dao

3.1 ActivityMapper.java

在使用mybatis-generator时自动生成的方法里有Activity selectByPrimaryKey(String activityId);
搭建Mybatis逆向工程
代码如下:

Activity selectByPrimaryKey(String activityId);

3.2 ActivityMapper.xml

    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="string">
        select
        <include refid="Base_Column_List"/>
        from tbl_activity
        where activity_id = #{
    id}
    </select>

4. Service层

4.1 ActivityService.java接口

写一个selectActivityById()方法

    //id查市场活动
    Activity selectActivityById(String id);

4.2 ActivityServiceImpl.xml

    @Override
    public Activity selectActivityById(String id) {
    
        return activityMapper.selectByPrimaryKey(id);
    }

5. Controller层

   @RequestMapping("/workbench/activity/selectActivityById.do")
    public @ResponseBody Object selectActivityById(String id) {
    
        Activity activity = activityService.selectActivityById(id);
        return activity;
    }

6. jsp页面

6.1 html-body

修改市场活动的模态框:

在这里插入图片描述
input标签都写在form表单中

  1. 所有者:
    在这里插入图片描述

  2. 名称:
    在这里插入图片描述

  3. 开始日期和结束日期

  4. 成本和描述
    在这里插入图片描述

6.2 html-script

6.2.1 点击修改按钮,弹出模态框

  1. 先判断checkbox是否被选中 ,也就是判断size()是否大于或等于0;如果不是,则.get(0).value获取一个dom对象的value值
    在这里插入图片描述
  2. $.ajax({})发送请求,如果成功,则为模态框的元素赋值并弹出模态窗口:
$("#edit-ActivityModal").modal("show");

在这里插入图片描述

6.2.2 点击模态框的保存按钮,保存修改

  1. 获取input内容
    在这里插入图片描述

  2. 判断用户输入的参数是否正确
    在这里插入图片描述

  3. $.ajax({})发送数据,运行成功,关闭模态窗口,并重新查询一遍数据
    在这里插入图片描述

  4. data的参数格式为:
    在这里插入图片描述

7. 完整代码

<%
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";
%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <base href="<%=basePath%>">
    <title>市场活动主页面</title>
    <script type="text/javascript" src="jquery/bootstrap-datetimepicker-master/sample in bootstrap v3/jquery/jquery-1.8.3.min.js"></script>
    <link rel="stylesheet" type="text/css" href="jquery/bootstrap-datetimepicker-master/sample in bootstrap v3/bootstrap/css/bootstrap.css">
    <script type="text/javascript" src="jquery/bootstrap-datetimepicker-master/sample in bootstrap v3/bootstrap/js/bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="jquery/bootstrap-datetimepicker-master/css/bootstrap-datetimepicker.min.css">
    <script type="text/javascript" src="jquery/bootstrap-datetimepicker-master/js/bootstrap-datetimepicker.min.js"></script>
    <script type="text/javascript" src="jquery/bootstrap-datetimepicker-master/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
    <!-- PAGINATION plugin -->
    <link rel="stylesheet" type="text/css" href="jquery/bs_pagination-master/bs_pagination-master/jquery.bs_pagination.min.css">
    <script type="text/javascript" src="jquery/bs_pagination-master/bs_pagination-master/jquery.bs_pagination.min.js"></script>
    <script type="text/javascript" src="jquery/bs_pagination-master/bs_pagination-master/localization/en.min.js"></script>

    <script type="text/javascript"> $(function () {
       //给“创建”按钮添加单击事件 $("#createActivityBtn").click(function () {
       //初始化,每次点击创建按钮,清空上次填写的数据 $("#create-ActivityForm").get(0).reset(); //弹出创建市场活动的模态窗口 $("#create-ActivityModel").modal("show"); }); //创建市场活动的模态窗口"保存"按钮的单击事件 $("#saveActivityBtn").click(function () {
       var owner = $("#create-activityOwner").val(); var name = $.trim($("#create-activityName").val()); var startDate = $("#create-activityStartDate").val(); var endDate = $("#create-activityEndDate").val(); var cost = $.trim($("#create-activityCost").val()); var description = $.trim($("#create-activityDescription").val()); if (owner == "") {
       alert("所有者不能为空"); return; } if (name == "") {
       alert("名称不能为空"); return; } if (startDate != "" && endDate != "") {
       if (endDate < startDate) {
       alert("结束日期不能比开始日期小"); return; } } var regExp = /^(([1-9]\d*)|0)$/; if (!regExp.test(cost)) {
       alert("成本只能为非负整数"); return; } //发送请求 $.ajax({
       url: "/workbench/activity/save.do", data: {
       activityOwner: owner, activityName: name, activityStartDate: startDate, activityEndDate: endDate, activityCost: cost, activityDescription: description }, type: "post", success: function (ret) {
       if (ret.code == "1") {
       alert("保存成功"); $("#create-ActivityModel").modal("hide"); queryActivityByConditionForPage(1, $("#demo_page1").bs_pagination('getOption', 'rowsPerPage')); } else {
       alert(ret.message); $("#create-ActivityModel").modal("show"); } } }); }); //日历插件 $("#create-activityStartDate").datetimepicker({
       language: 'zh-CN', format: 'yyyy-mm-dd', minView: 'month', initialDate: new Date(), autoclose: true, todayBtn: true, clearBtn: true }); $("#create-activityEndDate").datetimepicker({
       language: 'zh-CN', format: 'yyyy-mm-dd', minView: 'month', initialDate: new Date(), autoclose: true, todayBtn: true, clearBtn: true }); $("#query_startDate").datetimepicker({
       language: 'zh-CN', format: 'yyyy-mm-dd', minView: 'month', initialDate: new Date(), autoclose: true, todayBtn: true, clearBtn: true }); $("#query_endDate").datetimepicker({
       language: 'zh-CN', format: 'yyyy-mm-dd', minView: 'month', initialDate: new Date(), autoclose: true, todayBtn: true, clearBtn: true }); $("#edit-startDate").datetimepicker({
       language:'zh-CN', format:'yyyy-mm-dd', minView:'month', initialDate:new Date(), autoclose:true, todayBtn:true, clearBtn:true }) $("#edit-endDate").datetimepicker({
       language:'zh-CN', format:'yyyy-mm-dd', minView:'month', initialDate:new Date(), autoclose:true, todayBtn:true, clearBtn:true }) //当市场活动主页面加载完成,查询所有数据的第一页集街所有数据的总条数 queryActivityByConditionForPage(1, 5); //给查询按钮添加单击事件 $("#queryActivityBtn").click(function () {
       //查询所有符合条件的数据 queryActivityByConditionForPage(1, $("#demo_page1").bs_pagination('getOption', 'rowsPerPage')); }); //给全选按钮添加单击事件 $("#checkAll").click(function () {
       //如果“全选”按钮是选中状态,则列表中所有checkbox都选中 $("#tbodyId input[type='checkbox']").prop("checked", this.checked); }); //给动态元素添加单击事件 $("#tbodyId").on("click", "input[type='checkbox']", function () {
       //如果列表中的所有checkbox都选中,则全选按钮也选中 if ($("#tbodyId input[type='checkbox']").size() == $("#tbodyId input[type='checkbox']:checked").size()){
       $("#checkAll").prop("checked", true); } else {
      //如果列表中的所有checkbox至少一个没选中,则全选按钮取消选中 $("#checkAll").prop("checked", false); } }); //删除市场活动 $("#deleteActivityBtn").click(function () {
       var ids = $("#tbodyId input[type='checkbox']:checked"); if (ids.size() == 0) {
       alert("请选中要删除的市场活动"); return; } if (window.confirm("确定删除吗?")) {
       var myids = ""; $.each(ids, function () {
       myids += "id=" + this.value + "&"; }) myids = myids.substr(0, myids.length - 1); $.ajax({
       url: "/workbench/activity/delete.do", data: myids, type: "post", dataType: "json", success: function (ret) {
       if (ret.code == 1) {
       alert("删除成功!"); queryActivityByConditionForPage(1, $("#demo_page1").bs_pagination('getOption', 'rowsPerPage')); } else {
       alert(ret.message); } } }) } }); //点击“修改”市场活动弹出窗口 $("#editActivityBtn").click(function () {
       //获取列表中被选中的checkbox var checkerIds = $("#tbodyId input[type='checkbox']:checked"); if (checkerIds.size() == 0) {
       alert("请选择要修改的市场活动"); return; } if (checkerIds.size() > 1) {
       alert("每次只能选中一条数据修改"); return; } // var id = checkerIds.val(); //get(0)获得的是一个DOM对象 var id = checkerIds.get(0).value; $.ajax({
       url: "/workbench/activity/selectActivityById.do", data: {
      id: id}, type: "post", dataType: "json", success: function (ret) {
       $("#edit-id").val(ret.activityId); $("#edit-ActivityOwner").val(ret.activityOwner); $("#edit-ActivityName").val(ret.activityName); $("#edit-startDate").val(ret.activityStartDate); $("#edit-endDate").val(ret.activityEndDate); $("#edit-cost").val(ret.activityCost); $("#edit-describe").val(ret.activityDescription); //弹出模态窗口 $("#edit-ActivityModel").modal("show"); } }) }); //点击“保存”按钮,保存修改 $("#edit-saveBtn").click(function () {
       //1.获取内容 var aId = $("#edit-id").val(); var aOwner = $("#edit-ActivityOwner").val(); var aName = $("#edit-ActivityName").val(); var aStartDate = $("#edit-startDate").val(); var aEndDate = $("#edit-endDate").val(); var aCost = $("#edit-cost").val(); var aDescribe = $("#edit-describe").val(); if (aOwner == null || aOwner == "") {
       alert("名称和所有者不能为空"); return; } if (aStartDate > aEndDate) {
       alert("开始日期必须小于结束日期"); return; } var regExp = /^[1-9][0-9]*$/; if (!regExp.test(aCost)) {
       alert("成本必须是正整数"); return; } $.ajax({
       url: "/workbench/activity/updateActivity.do", data: {
       activityId: aId, activityOwner: aOwner, activityName: aName, activityStartDate: aStartDate, activityEndDate: aEndDate, activityCost: aCost, activityDescription: aDescribe }, type:"post", dataType:"json", success :function (ret) {
       if(ret.code==1){
       alert("修改成功!"); $("#edit-ActivityModel").modal("hide"); queryActivityByConditionForPage(1,$("#demo_page1").bs_pagination("getOption","rowsPerPage")); }else {
       alert(ret.message); } } }); }); }); //封装函数 function queryActivityByConditionForPage(pageNo, pageSize) {
       var name = $("#query_name").val(); var owner = $("#query_owner").val(); var startDate = $("#query_startDate").val(); var endDate = $("#query_endDate").val(); $.ajax({
       url: "/workbench/activity/search.do", data: {
       name: name, owner: owner, startDate: startDate, endDate: endDate, pageNo: pageNo, pageSize: pageSize }, type: 'post', dataType: 'json', success: function (ret) {
       //显示总条数 $("#totalRowsId").text(ret.totalRows); //显示市场活动的列表,遍历activityList,拼接所有行数据 var htmlStr = ""; $.each(ret.activities, function (index, object) {
       htmlStr += "<tr>"; htmlStr += "<td><input type=\"checkbox\" value=\"" + object.activityId + "\"></td>"; htmlStr += "<td><a style=\"text-decoration: none;cursor:pointer;\" οnclick=\"window.location.href='#'\">" + object.activityName + "</a></td>"; htmlStr += "<td>" + object.activityOwner + "</td>"; htmlStr += "<td>" + object.activityStartDate + "</td>"; htmlStr += "<td>" + object.activityEndDate + "</td>"; htmlStr += "</tr>"; }); //$("#tbodyId").html(htmlStr);覆盖追加 //$("#tbodyId").append(jsp页面片段的字符串);追加显示 $("#tbodyId").html(htmlStr); //由于只更新了tbody的内容,所以全选按钮没有更新,如果第一页选中,则第二页也会显示 $("#checkAll").prop("checked", false); var totalPages = ret.totalRows % pageSize == 0 ? ret.totalRows / pageSize : ret.totalRows / pageSize + 1; $("#demo_page1").bs_pagination({
       currentPage: pageNo,//当前页号,相当于pageNo rowsPerPage: pageSize,//每页显示条数,相当于pageSize totalRows: ret.totalRows,//总条数 totalPages: totalPages,//总页数 visiblePageLinks: 5,//最多可以显示的卡片数 showGoToPage: true,//是否显示“跳转到”部分,默认true--显示 showRowsPerPate: true,//是否显示“每页显示条数”部分,默认true--显示 showRowsInfo: true,//是否显示记录的信息,默认true--显示 onChangePage: function (event, pageObj) {
       queryActivityByConditionForPage(pageObj.currentPage, pageObj.rowsPerPage); } }); } }); } </script>
</head>
<body>

<!--创建市场活动的模态框-->
<div class="modal fade" id="create-ActivityModel" tabindex="-1">
    <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>
            <form class="form-inline" id="create-ActivityForm">
                <div class="modal-body col-md-12">
                    <div class="form-group">
                        <label class="col-md-2 control-label">所有者<span style="color: red;">*</span></label>
                        <div class="col-md-10">
                            <select class="form-control" id="create-activityOwner">
                                <c:forEach items="${requestScope.users}" var="u">
                                    <option value="${u.userId}">${u.uLoginAct}</option>
                                </c:forEach>
                            </select>
                        </div>
                        <label class="col-md-2 control-label">名称<span style="color:red">*</span></label>
                        <div class="col-md-10"><input type="text" id="create-activityName" class="form-control"/></div>
                    </div>
                    <div class="form-group col-md-12">
                        <label>开始日期</label>
                        <input type="text" class="form-control" id="create-activityStartDate" readonly/>
                        <label>结束日期</label>
                        <input type="text" class="form-control" id="create-activityEndDate" readonly/>
                    </div>
                    <div class="form-group col-md-12">
                        <label>成本</label>
                        <input type="text" class="form-control" id="create-activityCost"/>
                        <label>描述</label>
                        <textarea class="form-control" rows="3" id="create-activityDescription"></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" id="saveActivityBtn">保存</button>
                </div>
            </form>
        </div>
    </div>
</div>

<!--修改市场活动的模态框-->
<div class="modal fade" id="edit-ActivityModel" tabindex="-1">
    <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>
            <form class="form-inline">
                <input type="hidden" id="edit-id">
                <div class="modal-body col-md-12">
                    <div class="form-group">
                        <label class="col-md-2 control-label">所有者<span style="color: red;">*</span></label>
                        <div class="col-md-10">
                            <select class="form-control" id="edit-ActivityOwner">
                                <c:forEach items="${requestScope.users}" var="u">
                                    <option value="${u.userId}">${u.uLoginAct}</option>
                                </c:forEach>
                            </select>
                        </div>
                        <label class="col-md-2 control-label">名称<span style="color:red">*</span></label>
                        <div class="col-md-10"><input type="text" class="form-control" id="edit-ActivityName"/></div>

                    </div>
                    <div class="form-group col-md-12">
                        <label>开始日期</label>
                        <input type="text" class="form-control" id="edit-startDate" readonly/>
                        <label>结束日期</label>
                        <input type="text" class="form-control" id="edit-endDate" readonly/>
                    </div>
                    <div class="form-group col-md-12">
                        <label>成本</label>
                        <input type="text" class="form-control" id="edit-cost"/>
                    </div>
                    <div class="form-group col-md-12">
                        <label>描述</label>
                        <textarea class="form-control" rows="3" id="edit-describe"></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" id="edit-saveBtn">保存</button>
                </div>
            </form>
        </div>
    </div>
</div>
<!--主页面-->
<div>
    <!--搜索-->
    <div>
        <h2>市场活动列表</h2>
        <hr/>
        <div>
            <div class="row">
                <div class="col-xs-3">
                    <div class="input-group">
                            <span class="input-group-btn">
                                <button class="btn btn-default" type="button">名称</button>
                            </span>
                        <input type="text" class="form-control" id="query_name">
                    </div><!-- 名称 -->
                </div>
                <div class="col-xs-3">
                    <div class="input-group">
                            <span class="input-group-btn">
                                <button class="btn btn-default" type="button">所有者</button>
                            </span>
                        <input type="text" class="form-control" id="query_owner">
                    </div><!-- 所有者 -->
                </div>
                <div class="col-xs-3">
                    <div class="input-group">
                            <span class="input-group-btn">
                                <button class="btn btn-default" type="button">开始日期</button>
                            </span>
                        <input type="text" class="form-control" id="query_startDate">
                    </div><!-- 开始日期-->
                </div>
                <div class="col-xs-3">
                    <div class="input-group">
                            <span class="input-group-btn">
                                <button class="btn btn-default" type="button">结束日期</button>
                            </span>
                        <input type="text" class="form-control" id="query_endDate">
                    </div><!-- 结束日期-->
                </div>
                <div class="col-xs-3">
                    <button id="queryActivityBtn" type="button" class="btn btn-success">查询</button>
                </div>
            </div>
        </div>
    </div>
    <br/><br/>
    <!--操作按钮-->
    <div class="btn-group" role="group">
        <button type="button" style="pointer-events:auto" class="btn btn-primary" id="createActivityBtn">
            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
            创建
        </button>
        <button type="button" class="btn btn-default" id="editActivityBtn">
            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
            修改
        </button>
        <button type="button" class="btn btn-warning" id="deleteActivityBtn">
            <span class="glyphicon glyphicon-minus" aria-hidden="true"></span>删除
        </button>
        <div class="btn-group" role="group">
            <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-import" aria-hidden="true"></span>上次到列表数据(导入)
            </button>
            <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-export" aria-hidden="true"></span>下载戴列表数据(批量导入)
            </button>
            <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-export" aria-hidden="true"></span>下载列表数据(选择导出)
            </button>
        </div>
    </div>
    <!--表格-->
    <table class="table table-striped text-left">
        <thead>
        <tr>
            <th><input type="checkbox" id="checkAll"></th>
            <th>名称</th>
            <th>所有者</th>
            <th>开始日期</th>
            <th>结束日期</th>
        </tr>
        </thead>
        <tbody id="tbodyId">

        </tbody>
    </table>
    <!--分页查询-->
    <div class="col-md-12" id="demo_page1">
    </div>
</div>
</body>
</html>

原网站

版权声明
本文为[素心如月娅]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_47010003/article/details/125165471