美文网首页
springBoot集成shiro在thymeleaf的js中失

springBoot集成shiro在thymeleaf的js中失

作者: 阿乐_822e | 来源:发表于2024-01-03 12:25 被阅读0次

    在thymeleaf的模板页面中,可以正常使用以下语句引用权限

    <button shiro:hasPermission="sys:dic:add" id="newChk" type="button" class="btn btn-block btn-primary btn-success" >增加...</button>
    

    但在js页面中,无法直接使用
    以下示例使用场景,在bootstrap table表中,表格左上角放置一个“+”号超链,当点击时打开添加记录模态窗


    image.png

    之前这样定义title:


    image.png
    但在js代码中这样引用权限是无效的
    改造过程如下:
    1、在控制器中获取权限
     /**
         * 字典首页
         * @return
         */
        @RequestMapping("/projectDic")
        public ModelAndView projectDic(){
            ModelAndView modelAndView = new ModelAndView("project/projectDic");
            boolean isAddDic = isPermitted("sys:projectDic:add");
            modelAndView.addObject("isAddDic", isAddDic);
            return modelAndView;
        }
    

    2、在模板页中用隐藏控件保存权限值

    <!-- 所有隐藏控件  -->
        <input type="hidden" th:value="${isAddDic}" id="isAddDic">
    

    3、在js页面中获取隐藏控件的值来控制title

    /**根据用户权限决定是否显示第一列添加按钮
     *
     * @returns {string}
     */
    function setCellTitle(permissionName){ //一定要在true上加上双引号
        return $('#' + permissionName + "" ).val() === "true" ? "<a class='fa' href='javascript:addDic()'  title='添加字典'> + </a>" : "序号";
    }
    # 再改造title定义:
    columns: [
                {
                    title: setCellTitle("isAddDic"),
                    align: "center",
                    field: "",
                    formatter: function (value, row, index) {  //显示序号
                        return  index+1 ;
                    }
                },
    //其他列定义
    ]
    

    相关文章

      网友评论

          本文标题:springBoot集成shiro在thymeleaf的js中失

          本文链接:https://www.haomeiwen.com/subject/qqnmndtx.html