<%
    int length = managerInfos.length;
    for(int i = 0; i < length; i++)
    {
        optrId = managerInfos[i].getCode();
        roles = managerInfos[i].getRoleInfo();
rightsList = managerInfos[i].getAllFunctions();
%>
    var roleAry<%=i%> = new Array();
    var rightsAry<%=i%> = new Array();
<%
        if(roles!=null && roles.length>0) {
for(int j = 0; j < roles.length; j ++){
roleId = roles[j].getId();
//rights = (Function[])rightsList.get(roleId);
%>    var itemRole<%=j%> = new RoleRights();
    itemRole<%=j%>.id = "<%=roles[j].getId()%>";
    itemRole<%=j%>.name = "<%=roles[j].getName()%>";
    roleAry<%=i%>[<%=j%>] = itemRole<%=j%>;
<%
}
        ArrayList nameList = new ArrayList();
        int k = 0;
        for(int j = 0; j < rightsList.length; j ++){
            if(!nameList.contains(rightsList[j].getName()))
            {
                nameList.add(rightsList[j].getName());
%>
    var itemRights<%=k%> = new RoleRights();
    itemRights<%=k%>.id = "<%=rightsList[j].getId()%>";
    itemRights<%=k%>.name = "<%=rightsList[j].getName()%>";
    rightsAry<%=i%>[<%=k%>] = itemRights<%=k%>;<%
    k++;
            }
}
        }
%>
    var itemOptr<%=i%>  = new OptrObj();
    itemOptr<%=i%>.optrId = "<%=optrId%>";
    itemOptr<%=i%>.name = "<%=managerInfos[i].getDetail()%>";
itemOptr<%=i%>.pwd = "<%=managerInfos[i].getPwd()%>";
itemOptr<%=i%>.inputtype = "<%=managerInfos[i].getAccountType()%>";
itemOptr<%=i%>.xingming = "<%=managerInfos[i].getName()%>";
 itemOptr<%=i%>.company = "<%=managerInfos[i].getCompany()%>";
itemOptr<%=i%>.depart = "<%=managerInfos[i].getDepartment()%>";
itemOptr<%=i%>.tel = "<%=managerInfos[i].getTel()%>";
itemOptr<%=i%>.localID = "<%=managerInfos[i].getLocalID()%>";
    itemOptr<%=i%>.roles = roleAry<%=i%>;
    itemOptr<%=i%>.rights = rightsAry<%=i%>;
    optrObjAry[<%=i%>] = itemOptr<%=i%>;
<%
    }
%>
这段代码里面的循环弄成一个的行不?
要不把这个方法
function RoleRights(id, name){
    this.id = id;
    this.name = name;
}
要不把这个方法弄成一个数组,把那些new这个方法的地方都用数组代替