Java中前台往后台传多个id参数

1.传字符串的形式,字符串中每个id用 “,”  隔开

打印出来如下形式:

前台JS代码

function saveRoleAdd()
 {

     var roleNames = $(‘#roleNames‘).textbox("getText");
     var roleDetail = {};
         roleDetail.roleNames = roleNames;
     roleDetail.roleFunctionCount = 0;
        roleDetail.roleFunctionList = [];

        if(roleNames.length < 0 || roleNames.length == 0)
        {
            $.messager.alert("提示","请输入角色名");
            return;
        }

        var funNodeList = $(‘#roleFuntionTree‘).tree(‘getChecked‘, ‘indeterminate‘);
        var funLeafList = $(‘#roleFuntionTree‘).tree(‘getChecked‘);

     if(funNodeList.length <=0 && funLeafList.length <= 0)
     {
         $.messager.alert("提示","请选择权限节点");
            return;
     }

     Array.prototype.push.apply(funNodeList, funLeafList);  //将两个lis合并为一个数组

     var roleFunList = "";
     var roleFunNameList = "";
     for(var i=0; i < funNodeList.length; i++)
        {
            if (!isEmptyTarget(funNodeList[i].id))
          {
             if(!isEmptyTarget(roleFunList))
              {
                roleFunList += ",";     //拼接成用逗号隔开的字符串,里面是id
                roleFunNameList += ","; //拼接成用逗号隔开的字符串,里面text
              }
                roleFunList += funNodeList[i].id;
                roleFunNameList += funNodeList[i].text;

                var funDetail = {};
                funDetail.funId = parseInt(funNodeList[i].id);
                roleDetail.roleFunctionList.push(funDetail);
          }
        }
     roleDetail.roleFunctionCount = roleDetail.roleFunctionList.length;  

     var rows = $("#tblRoleDetail").datagrid("getRows");
        for (var i = 0; i < rows.length; i++)
        {
            if (roleNames == rows[i].roleNames)
            {
                $.messager.alert("提示","重复的角色名!");
                return;
            }
        }

        $(‘#tblRoleDetail‘).datagrid(‘appendRow‘,
            {
                roleNames:roleNames,
                funId:roleFunNameList
             }
        );

            $.ajax(
            {
              type : "POST",
              url : "permiss-manager/setRoleDetail.action?_dc=" + Math.random(),
              data :
            {
                roleName:roleNames,
                roleDetailData : roleFunList,
            },
              dataType : "json",
            success : function(result)
            {
                $.messager.alert("提示",result.result);
                closeRoleAdd();
                refreshRoleSelectTree();
            }
        });

         $(‘#rolePanel‘).panel(‘refresh‘, "afc/page/permission-manager/role-main.jsp");        

 }

后台Action方法代码

@Action("setRoleDetail")
    public void setRoleDetail()
    {
        webLogService.writeWebLog(ServletActionContext.getRequest().getSession().getAttribute("userId").toString(), "新增角色", ServletActionContext.getRequest().getRemoteAddr());

        String roleName = ServletActionContext.getRequest().getParameter("roleName");
        String roleDetailJsonData = ServletActionContext.getRequest().getParameter("roleDetailData");       // 这一部分就是转成一个list。下面调用方式直接传一个list过去
        List<Integer> funIdList = new ArrayList<Integer>();
        String [] arrar = StringUtils.split(roleDetailJsonData, ",");
        for (int i = 0; i < arrar.length; i++)
        {
            Integer funId = null;
            if(NumberUtils.isNumber(arrar[i]))
            {
                funId = NumberUtils.toInt(arrar[i]);
                funIdList.add(funId);
            }

        }
        permissionService.setRole(roleName, funIdList);
        try
        {
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setCharacterEncoding("utf-8");
            JSONObject result = new JSONObject();
            result.accumulate("result", "角色新增成功");
            response.getWriter().write(result.toString());

        } catch (Exception e)
        {
            e.printStackTrace();
        }

    }

2.直接传一个数组到后台

前台JS代码

function saveRoleEdit()
    {
        var roleNames = $(‘#roleNames‘).textbox("getText");
        var roleDetail = {};
        roleDetail.roleFunctionCount = 0;
        roleDetail.roleFunctionList = [];
        if(roleNames.length < 0 || roleNames.length == 0)
        {
            $.messager.alert("提示","请输入角色名");
            return;
        }
        var funNodeList = $("#roleFuntionTree").tree(‘getChecked‘,‘indeterminate‘);
        var funLeafList = $(‘#roleFuntionTree‘).tree(‘getChecked‘);
        if(funNodeList.length <=0 && funLeafList.length <= 0)
        {
            $.messager.alert("提示","请选择权限节点");
            return;
        }    

        Array.prototype.push.apply(funNodeList, funLeafList);   // funNodeList,funLeafList两个数组都变成合并后的数组
        var roleFunArray = [];
        for(var i=0; i < funNodeList.length; i++)
        {
            if (!isEmptyTarget(funNodeList[i].id))
            {
                roleFunArray.push(funNodeList[i].id);
            }
        }

         alert("权限ID Array为 :" + JSON.stringify(roleFunArray));
        $.ajax(
        {
              type : "POST",
              url : "permiss-manager/modifyRoleAuthority.action?_dc=" + Math.random(),
              data :
            {
                roleName:roleNames,
                roleDetailStr:JSON.stringify(roleFunArray),
            },
            success : function(result)
            {
            if(result == "success")
            {
                $.messager.alert("提示","修改权限成功!","info");
                editRoleDialog();
                refreshRoleSelectTree();

            }
            else
            {
                $.messager.alert("提示","修改权限失败!","info");
            }
            }
        });

    }

后台Action方法

@Action("modifyRoleAuthority")
    public void modifyRoleAuthority() throws IOException
    {
        HttpServletResponse  response = ServletActionContext.getResponse();
        response.setCharacterEncoding("utf-8");

        webLogService.writeWebLog(ServletActionContext.getRequest().getSession().getAttribute("userId").toString(), "权限给予", ServletActionContext.getRequest().getRemoteAddr());
        String roleName = ServletActionContext.getRequest().getParameter("roleName");
        String newFuncListStr = ServletActionContext.getRequest().getParameter("roleDetailStr");

        if(!StringUtils.isEmpty(roleName) && !StringUtils.isEmpty(newFuncListStr))
        {
            List<Integer> newFuncList = new ArrayList<Integer>();            //这种方法可以把前台传过来的String类型的值  每个转化成int  因为我这里之前dao爆了   就是因为String不能转化为Int的原因   这里可以转一下
            JSONArray mJSONArray= JSONArray.fromObject(newFuncListStr);
            newFuncList = Arrays.asList((Integer[])JSONArray.toArray(mJSONArray, Integer.class));
            if(!newFuncList.isEmpty())
            {
                if(permissionService.setRole(roleName, newFuncList))
                {
                    response.getWriter().write("success");
                }
                else
                {
                    response.getWriter().write("fail");
                }
            }
        }
    }
时间: 2024-10-04 18:24:54

Java中前台往后台传多个id参数的相关文章

Java中的传值与传引用

曾经对java中传值还是传引用的问题十分困惑,而且也被问到过许多次,无论是面试,还是平时我们平时的讨论中. 在stackoverflow上面浏览时,无意中发现了跟这个问题有关的论题,于是深入地查看了,感觉获益匪浅,于是结合自己过去的经验,写了这篇博客跟大家分享. 以前我觉得是这样的,java中的基本数据类型和String是传值的,而其它的类类型的数据则是传引用的.不过现在我觉得不是这样的. *****************************************************

java中Commons-fileupload实现上传

java中Commons-fileupload组件实现上传 在实现功能之前需要导入两个jar文件,分别是 commons-fileupload-1.3.1.jar 和 commons-io.jar 文件,这里就不提供链接,网上搜索都有可以自行下载. ----------------------------------------------------jsp页面----------------------------------------------------- 第一步:先上传一个简单的js

Web开发中前台与后台技术小结--关于EL表达式,JSTL,eval()函数

在我们日常Web开发中,常常用到EL表达式,JSTL标签,还有可能用到JavaScript中的eval().下面就这样技术和函数小小说明一下. EL(Expression Language),全称表达式语言,既然是开发语言,那么就像Java等语言一样是用来写语句的,通常是用在JSP页面中,我们为了获取JSP提供的内置对象的属性值, 我们通常会使用到EL表达式,比如开发中常见的一个需求就是获取项目的根目录,如果项目的名值变化了,我们在指定路径时,如果把项目的根目录用一个变量来表示的话,那么就不 需

Java中实现文件上传下载的三种解决方案

第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numUp"; try { InputStream stream = file.getInputStream();// 把文件读入 String filePath = request.getRealPath(fileAddre);//取系统当前路径

Java 中的传值与传引用

Java 函数中的传值和传引用问题一直是个比较"邪门"的问题,其实 Java 函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中修改参数值时,无论是基本类型的参数还是引用类型的参数,修改的只是该参数的拷贝,不影响函数实参的值,如果修改的是引用类型的成员值,则该实参引用的成员值是可以改变的,例子如下 class Model { public int i = 0; public String s = "

Java中的文件上传和下载

文件上传原理: 早期的文件上传机制: 在TCP/IP中.最早出现的文件上传机制是FTP.他是将文件由客户端发送到服务器的标准机制. jsp中的文件上传机制: 在jsp编程中不能使用FTP的方法来上传文件,这是由jsp运行机制所决定的.jsp中通过将表单元素设置Method="post" enctype="multipart/form-data" 属性,让表单以二进制编码的方式提交,在接收次请求的Servelet中用二进制流来获取内容,从而实现文件的上传. 表单的en

Java中资料的上传与下载

1.导架包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --

Java中前台JSP请求Servlet实例(http+Servlet)

1.前台jsp代码 himily.jsp,定义了用户名和密码两个输入框,使用post方式提交:/order-web/HimilyServlet其中order-web为站点名称,HimilyServlet为servlet访问路径 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html

Java中实现FTP上传下载文件的功能,完整代码

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上穿件文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo;         import java.io.DataOutputStream;         import java.io.InputStream;         import java.io.Out