首先,将界面中选好的菜单树,勾选完成后传到后台,后台通过转成字符串数组来进行设值
public static BigInteger sumRights(String[] rights){
BigInteger num = new BigInteger("0");
for(int i=0; i<rights.length; i++){
num = num.setBit(Integer.parseInt(rights[i]));
}
return num;
}
通过上面方法,返回一个BigInteger,然后将这个数字保存在所属角色的菜单权限字段中(RIGHTS)
注意的是:这里的菜单ID必须是数字,String[] rights为所选菜单的数组,通过setbit方法,设置进num中
其次,再获取权限的时候,也一样,通过把之前存入的菜单权限的biginteger和菜单ID做对比来判断是否具有该菜单权限
public static boolean testRights(BigInteger sum,int targetRights){
return sum.testBit(targetRights);
}
BigInteger使用例子
public class Main {
public static void main(String[] args) {
// 用于处理超出了Integer返回的大整数
BigInteger num = new BigInteger("0");
num = num.setBit(2);
num = num.setBit(1);
num = num.setBit(7);
System.out.println(num);
System.out.println(num.testBit(2));
System.out.println(num.testBit(1));
System.out.println(num.testBit(3));
System.out.println(num.testBit(7));
num = num.clearBit(7);
System.out.println(num.testBit(7));
/**
134
true
true
false
true
false
*/
}
}