开发者学堂课程【使用 Spring Data Redis+zTree 实现授权模型的设计与思考:给角色分配菜单向后台提交数据的分析】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/745/detail/13180
给角色分配菜单向后台提交数据的分析
内容介绍:
一、给角色分配菜单向后台提交数据的分析
一、给角色分配菜单向后台提交数据的分析
跳转到分配菜单的页面,接下来需要给角色真的分配东西,也会有应用,下图中勾选了这么些菜单,也可以取消再勾选别的,如果真的要勾选中这些菜单要点击保存,目的是将这些新勾选的菜单全部添加进数据库中,表示角色已经拥有这些菜单了。说是非彻底应用,是因为这些菜单需要提前拿到,如何拿到这些菜单,是由 ztree 的 api 提供的。
获取到被选中的框,一般选用的方法是
1.zTreeobj getCheckedNodes
概述【依赖 jquery.zlree.excheck 扩展 js ]
获取输入框被勾迭或未勾选的节点集合。[setting.checkenable = true 时有效]请通过 zTree 对象执行此方法。
Function 参数说明
checked
Boolean
checked = true 表示获取被勾选的节点集合 checked = false 表示获取未勾选的节点集合省略此参数。等同于 true.
对于 treeNode.nochecked = true 的节点不进行获取-返回值
返回全部符合要求的节点柴合 Array
function 举例
(1)获取当前被勾选的节点集合var treeObj = S.fn.zTree.getZTreeobj( tree")y;var nodes = treeobj getCheckedNodes(true);
要想办法将所选的菜单都传送到后台去,后台能写程序,才能将程序存进数据库,点击保存就相当于保存一个表盘,整个页面上有一个大的表单,点击保存就将这个大的表单提交到后台,假设有个form表单
<form>
<input type="hidden" name="oox" value=""
<input type="hidden" name="sooi"value="">
</form>
<input type="hidden" name="oox" value=""是其中一个隐藏域,表示的是当前角色的id,因为要给船运专员分配id,所以需要将船运专业的id传到后台上去,
<input type="hidden" name="sooi"value="">是另一个隐藏域,表示的是勾选的菜单的一个集合,使用逗号分割,假如分割的有很多菜单,编写成一个字符串集合,1,2,3,4,然后将这个字符串集合传到后台去
href="#" onclick "submitCheckedNodes( ) ; formSubmit('roleAction_module , '_self');this.blur();">保存</a></li>点击保存按钮,就在提交数据,
67e<body>
<form name="icform" method="post">
<%--角色的id --%>
<input type="hidden" name="id" value=“${ id}”/>I表单中有两个隐藏域,第一个是hidden,名字叫做id,
<%--勾选的菜单的id,使用,拼接的--%>
<input type="hidden" id="moduleIds" name="moduleIds" value=""/>第二个隐藏域id跟名字都叫做moduleIds,值的显示为空,值是何时赋值上去的,提交一个隐藏域,需要有赋值才有意义
<div id="menubar">
<div id="middLeMenubar">
<div id="innerMenubar">
<div id="navMenubar">
<ul>
<li id="save">
<a href="#” onclick="submitCheckedNodes() ;formSubmit( 'roleAction_module ' , '_self' );this.b,
<li id="back"><a href="#”
onclick="formSubmit( 'roleAction_list' , '_self' );this.blur(); ">返回</a></li>
</ul>
</div></div>
当值赋值完成以后,点击保存href="#" onclick "submitCheckedNodes( ) ; formSubmit('roleAction_module , '_self');this.blur();">保存</a></li> ,就会有 onclick,其中有一个函数:submitCheckedNodes,点击保存,会先运行这个函数,后来还有一个函数formSubmit,这个方法的意思是要提交表单,意思是点击保存完成之后,先运行第一个函数,运行完成之后才会提交表单,
2、submitCheckedNodes
提交所选中的节点,
/获取所有选择的节点
function submitCheckedNodes() {
var nodes = new Array();
//定义一个新的数组,
nodes = zTreeobj.getCheckedNodes(true);//取得选中的结点
zTreeobj.指刚才生成的ztree的树形对象,//获取到所有勾选的节点的集合,等于拿到所有勾选的节点,
var str = "";
//定义空的字符串
for (i = 0; i < nodes. length; i++) {
写了一个简单的for循环,表示小于数组的i++
//遍历数组,拿到所有选中的节点集合,遍历数组之后可以拿到里面的id值,字符串为空,字符串后面拼接了一个+=,一直拼接,
if (str !="") {
str += ",";
str += nodes[i].id;
l/JQ的代码
$( '#moduleIds ' ).val(str);
</ script>
'head>
<body>
全部拼接完成之后可能会得到如下一个字符串:
//
str
=
1
,2,3,4,
$( '#moduleIds ' ).val(str);
用#号赋值给 moduleIds,就是给隐藏域赋值,将str的值赋值给了隐藏域,点击保存,先执行 submitCheckedNodes,拿到所有的隐藏键,生成字符串,然后用逗号分隔开来,拼完之后赋值给隐藏域,再跟随表单一起提交到后台,所以后台接收到两个值,一个是所选择的角色 id,另一个是所勾选的所有的菜单的集合,用逗号分割开来。