找回密码
 注册成为天翎用户
查看: 1489|回复: 7

[已解决] 在脚本中遍历map报错

[复制链接]
广州远信软件 发表于 2014-12-10 18:23:31 | 显示全部楼层 |阅读模式
本帖最后由 kharry 于 2014-12-24 16:40 编辑

var userProcess = createProcess("cn.myapps.core.user.ejb.UserProcess");
                                var deptUserMap = userProcess.getDeptUserMap(deptIds, roleId);
                                println("deptUserMap="+deptUserMap);
                                println("deptUserMap.size="+deptUserMap.size());
                                var flowId = billDefiVO.getId();
                               
                                println("flowId="+flowId);
                               
                                if(deptUserMap != null && deptUserMap.size() > 0) {
                                        for(var key in deptUserMap){  
                                                var userList  = deptUserMap[key];       
                                                println("key="+key+",userList="+userList);                                       
                                                if(userList != null && userList.size() > 0) {
                                                        println("userList.size="+userList.size());
                                                        var user = userList.get(0);

我上面这里面的代码deptUserMap获取到的是一个map,但是使用for(var key in deptUserMap),发现打印出的key并不对,打印结果如下,key=notifyAll,userList=function notifyAll() {/*
void notifyAll(),请问是什么原因类,我应该怎样去遍历

18:15:57,837  INFO PrintJsUtil:27 - JsUtil:deptUserMap={11e1-81e2-a771f18e-9124-47aada6b7467=[cn.myapps.core.user.ejb.UserVO@406a3841], 11e1-81e2-714059a0-9124-47aada6b7467=[cn.myapps.core.user.ejb.UserVO@72041824, cn.myapps.core.user.ejb.UserVO@6acd1df6, cn.myapps.core.user.ejb.UserVO@538cc578]}
18:15:57,838  INFO PrintJsUtil:27 - JsUtil:deptUserMap.size=2
18:15:57,838  INFO PrintJsUtil:27 - JsUtil:flowId=11df-ebbe-cc0271ed-87ce-f9b5e2172648
18:15:57,839  INFO PrintJsUtil:27 - JsUtil:key=notifyAll,userList=function notifyAll() {/*
void notifyAll()
*/}

java.lang.Exception: JavaScriptRunning:[FormName:OA办公管理系统/公文管理/公文收发/发文表单 Activity(11e4-7ebb-ddc8b624-b390-93a685ac62b2).发文转收文.afterActionScript]: TypeError: Cannot find function size. (11e4-7ebb-ddc8b624-b390-93a685ac62b2).发文转收文.afterActionScript#56)
        at cn.myapps.core.macro.runner.JavaScriptRunner.run(JavaScriptRunner.java:162)

java.lang.Exception: JavaScriptRunning:[FormName:OA办公管理系统/公文管理/发文表单 Activity(11e4-7ebb-ddc8b624-b390-93a685ac62b2).发文转收文.afterActionScript]: TypeError: Cannot find function size. (11e4-7ebb-ddc8b624-b390-93a685ac62b2).发文转收文.afterActionScript#55)
 楼主| 广州远信软件 发表于 2014-12-10 18:25:54 | 显示全部楼层
回复 1# 广州远信软件
map里面放的是  new HashMap<String,Collection<UserVO>>();,对应java代码如下


    public Map<String,Collection<UserVO>> getDeptUserMap(String deptIds, String roleId) throws Exception {
                Map<String,Collection<UserVO>> deptUserMapFinal = new HashMap<String,Collection<UserVO>>();
                Set<String> deptIdSet = new HashSet<String>();
                if(null != deptIds && !"".equals(deptIds)) {
                        String[] deptIdArray = deptIds.split(";");
                        if(null != deptIdArray && deptIdArray.length > 0){                               
                                final DepartmentProcess departmentProcess = (DepartmentProcess) ProcessFactory
                                                .createProcess(DepartmentProcess.class);
                                for (String deptId : deptIdArray) {
                                        if(null != deptId && !"".equals(deptId)) {
                                                DepartmentVO department = departmentProcess.getUpperDept(deptId, 1);
                                                if(null != department) {
                                                        deptIdSet.add(department.getId());
                                                }
                                               
                                        }
                                }
                        }
                       
                       
                }
                if(deptIdSet.size() > 0) {       
                        Map<String,Collection<UserVO>> deptUserMap = this.getDeptUserMapByRole(roleId);
                        for (String deptId : deptIdSet) {
                                if(deptUserMap.containsKey(deptId)) {
                                        deptUserMapFinal.put(deptId, deptUserMap.get(deptId));
                                }
                        }
                }               
                return deptUserMapFinal;
        }
回复

使用道具 举报

kharry 发表于 2014-12-11 08:50:51 | 显示全部楼层
map是键值对   不能像集合一样遍历   
可以试试
for(var iter = map.keySet().iterator();iter.hasNext();){
       var key = iter.next();
       var value = map.get(key);
}
回复

使用道具 举报

 楼主| 广州远信软件 发表于 2014-12-12 10:32:50 | 显示全部楼层
回复 3# kharry


   谢谢,是不是在脚本里面遍历集合的时候用java代码里面的遍历方式就可以
回复

使用道具 举报

kharry 发表于 2014-12-12 15:59:58 | 显示全部楼层
是的  而且javascript里面没有  in遍历
回复

使用道具 举报

 楼主| 广州远信软件 发表于 2014-12-24 11:13:48 | 显示全部楼层
问题已解决,可关贴
回复

使用道具 举报

 楼主| 广州远信软件 发表于 2014-12-24 11:19:31 | 显示全部楼层
问题已解决,可关贴!
回复

使用道具 举报

kharry 发表于 2014-12-24 11:21:49 | 显示全部楼层
感谢楼主反馈  该帖结贴
回复

使用道具 举报

本版积分规则

手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-14 04:54

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表