在thymeleaf的模板页面中,可以正常使用以下语句引用权限
<button shiro:hasPermission="sys:dic:add" id="newChk" type="button" class="btn btn-block btn-primary btn-success" >增加...</button>
但在js页面中,无法直接使用
以下示例使用场景,在bootstrap table表中,表格左上角放置一个“+”号超链,当点击时打开添加记录模态窗
之前这样定义title:
但在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 ;
}
},
//其他列定义
]