/** 初始化角色权限Map。 */ private void initRoleRightsMap() { ApplicationContext ctx = Global._ctx; IRoleManager roleManager = (IRoleManager) ctx.getBean("roleManager"); IModuleManager moduleManager = (IModuleManager) ctx.getBean("moduleManager"); IFunctionManager functionManager = (IFunctionManager) ctx.getBean("functionManager"); IMethodManager methodManager = (IMethodManager) ctx.getBean("methodManager"); // 获得所有角色 List allRolesList = roleManager.getRoles(); Role rolePO = null; Module modulePO = null; List rights = null; for (int i = 0; i < allRolesList.size(); i++) { rolePO = (Role) allRolesList.get(i); rights = new ArrayList(); // 获得角色对应的模块 List modulesList = moduleManager.getModulesByRoleId(rolePO.getId()); for (int j = 0; j < modulesList.size(); j++) { modulePO = (Module) modulesList.get(j); if (!modulePO.getActionUrl().equals("#")) { ModuleAndFunction maf = new ModuleAndFunction(); maf.setModuleNameSpace(modulePO.getActionUrl()); // 存放当前模块对应的所有方法并且也对应角色里的功能下的方法 List methodArrayList = new ArrayList(); List functionList = functionManager.getFunctionsByRoleIdAndModuleId(rolePO.getId(), modulePO.getId()); for (Iterator iter = functionList.iterator(); iter.hasNext(); ) { Function function = (Function) iter.next(); List methodList = methodManager.getMethodsByFunctionId(function.getId()); for (int m = 0; m < methodList.size(); m++) { Method method = (Method) methodList.get(m); methodArrayList.add(method); } } maf.setMethodList(methodArrayList); rights.add(maf); } } RoleRightsMap.put(rolePO.getId(), rights); } }