基于SSM的RBAC权限系统(5)-利用ajax,JQuery实现动态搜索

基于SSM的RBAC权限系统(5)-利用ajax,JQuery实现动态搜索

先来看看效果图

原来动态时页面的(基于bookstrap)
  <div class="row">
                <div class="col-md-12 ">
                    <table id="tbl_user" class="table table-hover table table-striped">
                        <thead>
                          <tr>
                            <th>ID</th>
                            <th>姓名</th>
                            <th>手机</th>
                            <th>年龄</th>
                            <th>经验</th>
                            <th>帐号</th>
                            <th>操作</th>
                            </tr>
                        </thead>
                        <tbody>

                        </tbody>
                    </table>
                </div>
            </div>

   <c:forEach items="${pageInfo.list}" var="user">
                            <tr class="tr_user">
                                <th>${user.id}</th>
                                <th>${user.name}</th>
                                <th>${user.phone}</th>
                                <th>${user.age}</th>
                                <th>${user.experience}</th>
                                <th>${user.account}</th>
                                <th>
                                    <button name="${user.id}"
                                            class="roleBtn btn btn-info glyphicon glyphicon-eye-open btn-sm"
                                            data-toggle="modal" data-target="#roleModal"> 分配角色
                                    </button>
                                    <c:choose>
                                        <c:when test="${fn:contains(user.name,'超级管理员')}">
                                            <button class="btn btn-warning glyphicon glyphicon-cog btn-sm disabled">
                                                禁止编辑
                                            </button>
                                            <button class="btn btn-danger glyphicon glyphicon-trash btn-sm disabled">
                                                禁止删除
                                            </button>
                                        </c:when>
                                        <c:otherwise>
                                            <button name="${user.id}"
                                                    class="editBtn btn btn-warning glyphicon glyphicon-cog btn-sm"
                                                    data-toggle="modal" data-target="#editModal">编辑
                                            </button>
                                            <button name="${user.id}"
                                                    class="deleteBtn btn btn-danger glyphicon glyphicon-cog btn-sm"
                                                    data-toggle="modal" data-target="#deleteModal">删除
                                            </button>
                                        </c:otherwise>
                                    </c:choose>
                                </th>
                            </tr>
                        </c:forEach>
                    </table>
                      <div class="row">
            <div id="pageNav"></div>
                <div class="col-md-2">
                    <button class="btn btn-primary glyphicon glyphicon-plus" data-toggle="modal"
                            data-target="#addModal">增加
                    </button>
                </div>
                <div class="col-md-4">
                    <button type="button" class="btn btn-info">当前页码:${pageInfo.pageNum}</button>
                    <button type="button" class="btn btn-info">总页码:${pageInfo.pages}</button>
                    <button type="button" class="btn btn-info">总记录数:${pageInfo.total}</button>
                </div>
                <div class="col-md-6">
                    <nav aria-label="Page navigation">
                        <ul class="pagination">
                            <li><a href="${ pageContext.request.contextPath }/homePage/userManagement?pn=1">首页</a></li>
                            <li>
                                <a href="${ pageContext.request.contextPath }/homePage/userManagement?pn=${pageInfo.pageNum-1}"
                                   aria-label="Previous">
                                    <span aria-hidden="true">&laquo;</span>
                                </a>
                            </li>
                            <c:forEach items="${pageInfo.navigatepageNums}" var="index">
                                <c:if test="${index==pageInfo.pageNum}">
                                    <li class="active"><a
                                            href="${ pageContext.request.contextPath }/homePage/userManagement?pn=${index}">${index}</a>
                                    </li>
                                </c:if>
                                <c:if test="${index!=pageInfo.pageNum}">
                                    <li>
                                        <a href="${ pageContext.request.contextPath }/homePage/userManagement?pn=${index}">${index}</a>
                                    </li>
                                </c:if>
                            </c:forEach>

                            <li>
                                <a href="${ pageContext.request.contextPath }/homePage/userManagement?pn=${pageInfo.pageNum+1}"
                                   aria-label="Next">
                                    <span aria-hidden="true">&raquo;</span>
                                </a>
                            </li>
                            <li>
                                <a href="${ pageContext.request.contextPath }/homePage/userManagement?pn=${pageInfo.pages}">末页</a>
                            </li>
                        </ul>
                    </nav>

        </div><%--</row>--%>
代码略长,但是没有要动脑的地方(分页数据通过pageHelper获得,这里th其实应该改为td…),实现动态返回结果,无非监听搜索栏的数据,数据一改变,到后台拿到分页后的数据,然后再用JQuery拼装好。后台代码如下:
   public Msg getUserByKeyWord(@RequestParam(value = "KeyWord")String KeyWord,
                                @RequestParam(value = "pn",defaultValue ="1")Integer pn
                               ) throws Exception{
        //判断权限
        Throwable t = new Throwable();
        boolean isHasPermission= PermissionUtil.hasPermission(this.getClass(),t.getStackTrace()[0].getMethodName());
        if(isHasPermission){
        //这里告诉PageHelper查询第几页,一页多少数据
        PageHelper.startPage(pn, 10);
        List<User> users = userService.selectByKeyWord(KeyWord);
        PageInfo pageInfo=new PageInfo(users);
            return Msg.success().add("pageInfo",pageInfo);
        }else{
            return Msg.fail().add("returnMsg","你没有获得权限[通过关键字返回用户]");
        }
    }
再来看看前台如何拼接语句

搜索栏监听

function goToPage(KeyWord,pn) {
                $.ajax({
                    url: "user/getUserByKeyWord",
                    data: {"KeyWord":KeyWord,"pn":pn},
                    type: "GET",
                    success: function (result) {
function goToPage(KeyWord,pn) {
                $.ajax({
                        $("#tbl_user tbody").empty();
                        if(result.code==100){
                            var list=result.extend.pageInfo.list;
                            $.each(list,function (index,item) {
                                //拼接每一行的数据
                                build_user_tal(item);
                            });
                            var pageInfo=result.extend.pageInfo;
                            pagenumber=pageInfo.pageNum;
                            //拼接分页条以及其他
                            build_user_nav(pageInfo);
                        }else{
                            //权限不足,弹窗警告
                            show_errorWindows(result.extend.returnMsg);
                        }
                    }
                });
            }
    $('#keyword').bind('input oninput', function() {
                //拿到关键字
                var KeyWord=$('#keyword').val();
                KW=KeyWord;
                //进行搜索后跳到第一页
                goToPage(KeyWord,1);
            });

如何在一进入就进行一次搜索来显示界面?

window.onload =function() {
    KW="";
    var pn=${pn};
    goToPage(KW,pn);
};
拼接语句:略长,可以不看,初学JQuery写得很渣
function build_user_tal(item) {
                var tr=$("<tr></tr>").addClass("tr_user");
                var id=$("<th></th>").append(item.id);
                var name=$("<th></th>").append(item.name);
                var phone=$("<th></th>").append(item.phone);
                var age=$("<th></th>").append(item.age);
                var experience=$("<th></th>").append(item.experience);
                var account=$("<th></th>").append(item.account);
                var td=$("<th></th>");
                tr.append(id)
                    .append(name)
                    .append(phone)
                    .append(age)
                    .append(experience)
                    .append(account);
                var btn1=$("<button></button>")
                    .addClass("roleBtn btn btn-info glyphicon glyphicon-eye-open btn-sm ajax_btn")
                    .attr("data-toggle","modal").attr("data-target","#roleModal").attr("name",item.id)
                    .append(" 分配角色");
                td.append(btn1);
                if(item.name=="超级管理员"){
                    var btn2=$("<button></button>")
                        .addClass("btn btn-warning glyphicon glyphicon-cog btn-sm disabled ajax_btn")
                        .append("禁止编辑");
                    var btn3=$("<button></button>")
                        .addClass("btn btn-danger glyphicon glyphicon-trash btn-sm disabled ajax_btn")
                        .append("禁止删除");
                    td.append(btn2);
                    td.append(btn3);
                    tr.append(td);
                }else if(item.id==<%=userID %>){
                    var btn2=$("<button></button>")
                        .addClass("editBtn btn btn-warning glyphicon glyphicon-cog btn-sm ajax_btn")
                        .attr("data-toggle","modal").attr("data-target","#editModal").attr("name",item.id)
                        .append(" 编辑");
                    var btn3=$("<button></button>")
                        .addClass("btn btn-danger glyphicon glyphicon-trash btn-sm disabled ajax_btn")
                        .append("禁止删除");
                    td.append(btn2);
                    td.append(btn3);
                    tr.append(td);
                }

                else{
                    var btn2=$("<button></button>")
                        .addClass("editBtn btn btn-warning glyphicon glyphicon-cog btn-sm ajax_btn")
                        .attr("data-toggle","modal").attr("data-target","#editModal").attr("name",item.id)
                        .append(" 编辑");


                    var btn3=$("<button></button>")
                        .addClass("deleteBtn btn btn-danger glyphicon glyphicon-cog btn-sm ajax_btn")
                        .attr("data-toggle","modal").attr("data-target","#deleteModal").attr("name",item.id)
                        .append(" 删除");

                    td.append(btn2);
                    td.append(btn3);
                    tr.append(td);

                }

                $("#tbl_user tbody").append(tr);

            }

            function build_user_nav(pageInfo) {
                var pageNav=$("#pageNav");
                pageNav.empty();
                var div1=$("<div></div>").addClass("col-md-2");
                var div1_btn1=$("<button></button>").addClass("btn btn-primary glyphicon glyphicon-plus")
                    .attr("data-toggle","modal").attr("data-target","#addModal").append("增加");
                div1_btn1.appendTo(div1);
                div1.appendTo(pageNav);
                var div2=$("<div></div>").addClass("col-md-4");

                var div2_btn1=$("<button></button>").addClass("btn btn-info").attr("type","button").append("当前页码:"+pageInfo.pageNum);
                div2_btn1.appendTo(div2);
                var div2_btn2=$("<button></button>").addClass("btn btn-info").attr("type","button").append("总页码:"+pageInfo.pages);
                div2_btn2.appendTo(div2);
                var div2_btn3=$("<button></button>").addClass("btn btn-info").attr("type","button").append("总记录数:"+pageInfo.total);
                div2_btn3.appendTo(div2);
                pageNav.append(div2);
                var div3=$("<div></div>").addClass("col-md-6");
                var nav=$("<div></div>").attr("aria-label","Page navigation");
                nav.appendTo(div3);
                var ul=$("<ul></ul>").addClass("pagination");
                ul.appendTo(nav);
                var li1=$("<li></li>");
                var li1_a1=$("<a></a>").addClass("btn_page ").attr("href","javascript:;")
                    .attr("aria-label","Previous").attr("name","1")
                    .append("首页");
                li1_a1.appendTo(li1);
                ul.append(li1);
                var li2=$("<li></li>");
                var li2_a1=$("<a></a>").addClass("btn_page").attr("href","javascript:;")
                    .attr("aria-label","Previous").attr("name",pageInfo.pageNum-1);

                var li2_span1=$("<span></span>");
                li2_span1.attr("aria-hidden","true").append("<");
                li2_span1.appendTo(li2_a1);
                li2_a1.appendTo(li2);
                ul.append(li2);
                var navigatepageNums=pageInfo.navigatepageNums;
                $.each(navigatepageNums,function (index,item) {
                   if(item==pageInfo.pageNum){
                        var li=$("<li></li>").addClass("active");
                        var a=$("<a></a>").addClass("btn_page").attr("href","javascript:;").attr("name",item).append(item);
                         a.appendTo(li);
                         li.appendTo(ul);
                   }else{
                       var li=$("<li></li>");
                       var a=$("<a></a>").addClass("btn_page").attr("href","javascript:;").attr("name",item).append(item);
                       a.appendTo(li);
                       li.appendTo(ul);
                   }
                });
                //继续添加
                var li4=$("<li></li>");
                var li4_a1=$("<a></a>").addClass("btn_page").attr("href","javascript:;")
                    .attr("aria-label","Next").attr("name",pageInfo.pageNum+1);
                var li4_span1=$("<span></span>").attr("aria-hidden","true").append(">");
                li4_span1.appendTo(li4_a1);
                li4_a1.appendTo(li4);
                li4.appendTo(ul);

                var li5=$("<li></li>");
                var li5_a1=$("<a></a>").addClass("btn_page").attr("href","javascript:;")
                    .attr("aria-label","Previous").attr("name",pageInfo.pages)
                    .append("末页");;
                li5_a1.appendTo(li5);
                li5.appendTo(ul);
                pageNav.append(div3);
               }

完整项目地址

这是我第一个写的web项目,代码烂得飞起,仅供纪念,不做参考
带Shiro版:https://github.com/EnTaroAdunZ/ssm_rbac_shiro.git
不带Shiro版:https://github.com/EnTaroAdunZ/ssm_rbac.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值