場景:
頁面使用的是DataTables,做一個後臺管理系統。頁面按鈕shiro標籤可以直接控制,這個沒問題,但是,列表,分頁,以及列表每一行內的操作按鈕都是通過引入一個js文件異步加載出來的。如:list.js.,列表每一行都有行內操作的需求,只是根據配置的權限,每個角色會有不同的操作權限。直接在list.js中用
"columnDefs": [
{
'orderable': false,
'targets': [12],
"render":
function ( data, type, row ) {
var str='';
<shiro:hasPermission name="update">
str+='<button type="button" class="btn btn-sm btn-outline grey-salsa" οnclick="showTenant('+data+',\'update\')">修改</button>';
</shiro:hasPermission>
<shiro:hasPermission name="delete">
str+='<button type="button" class="btn btn-sm btn-outline grey-salsa" οnclick="showTenant('+data+',\'delete\')">刪除</button>';
</shiro:hasPermission>
return str;
}
}
}
直接使用shiro標籤無效。
## 解決方案:
既然JSP頁面shiro標籤可以生效,在引用的JS文件中無效。那就在JSP頁面中加入一個頁面內的js,作爲過渡,shiro控制這個過渡的js,然後list.js文件引用這個js。
### 一、jsp頁面加入js。
```jsp
//操作按鈕權限控制
function getPermission ( data, type, row ) {
var str='';
<shiro:hasPermission name="update">
str+='<button type="button" class="btn btn-sm btn-outline grey-salsa" οnclick="showTenant('+data+',\'update\')">修改</button>';
</shiro:hasPermission>
<shiro:hasPermission name="delete">
str+='<button type="button" class="btn btn-sm btn-outline grey-salsa" οnclick="showTenant('+data+',\'delete\')">刪除</button>';
</shiro:hasPermission>
return str;
}
二、 在list.js中修改爲:
"columnDefs": [
{
'orderable': false,
'targets': [12],
"render":
function ( data, type, row ) {
return getPermission(data, type, row);
}
}
}
原文章鏈接:https://blog.csdn.net/qq_29290295/article/details/88290005