• Action中使用Json


    1.前台页面中的ajax:

    //根据部门查询该部门下的用户列表
            function doSelectDept(){
                //1、获取部门
                var dept = $("#toCompDept option:selected").val();
                if(dept != ""){
                    //2、根据部门查询列表
                    $.ajax({
                        url:"${basePath}sys/home_getUserJson2.action",
                        data:{"dept":dept},
                        type:"post",
                        dataType:"json",//返回数据类型
                        success: function(data){
                            //2.1、将用户列表设置到被投诉人下拉框中
                            if(data != null && data != "" && data != undefined){
                                if("success" == data.msg){
                                    var toCompName = $("#toCompName");
                                    toCompName.empty();
                                    $.each(data.userList, function(index, user){
                                        toCompName.append("<option value='" + user.name + "'>" + user.name + "</option>");
                                    });
                                } else {alert("获取被投诉人列表失败!");}
                            } else {
                                alert("获取被投诉人列表失败!");
                            }
                        },
                        error:function(){alert("获取被投诉人列表失败!");}
                    });
                } else {
                    //清空被投诉人列表下拉框
                    $("#toCompName").empty();
                }
            }

    后台Action中输出json格式文本:

    方法一:直接用输出流输出Json格式的文本内容。

    要在项目中引入对应的包:找到struts2.x 的lib包,向本项目lib包加入“json-lib-2.3-jdk15.jar,ezmorph-1.0.6.jar,commons-beanutils-1.8.0.jar”

        public void getUserJson(){
            try {
                //1、获取部门
                String dept = ServletActionContext.getRequest().getParameter("dept");
                if(StringUtils.isNotBlank(dept)){
                    QueryHelper queryHelper = new QueryHelper(User.class, "u");
                    queryHelper.addCondition("u.dept like ?", "%" + dept);
                    //2、根据部门查询用户列表
                    List<User> userList = userService.findObjects(queryHelper);
                    //创建Json对象
                    JSONObject jso = new JSONObject();
                    jso.put("msg", "success");
                    jso.accumulate("userList", userList);
                    
                    //3、输出用户列表以json格式字符串形式输出
                    HttpServletResponse response = ServletActionContext.getResponse();
                    response.setContentType("text/html");
                    ServletOutputStream outputStream = response.getOutputStream();
                    outputStream.write(jso.toString().getBytes("utf-8"));
                    outputStream.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    方法二:使用struts2-json-plugin-2.x.jar 包,由strutsaction中的变量组装成Json对象。

    加入 struts2-json-plugin-2.x.jar 到项目中,在*-struts.xml中配置对应请求方法的返回类型为json。如下:

    Action中:

        public String getUserJson2(){
            try {
                //1、获取部门
                String dept = ServletActionContext.getRequest().getParameter("dept");
                if(StringUtils.isNotBlank(dept)){
                    QueryHelper queryHelper = new QueryHelper(User.class, "u");
                    queryHelper.addCondition("u.dept like ?", "%" +dept);
                    //2、根据部门查询用户列表
                    return_map = new HashMap<String, Object>();
                    return_map.put("msg", "success");
                    return_map.put("userList", userService.findObjects(queryHelper));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return SUCCESS;
        }

    配置文件中:

        <package extends="json-default" namespace="/sys" name="sysHomeJson-action">
            <action name="home_getUserJson2" method="getUserJson2"
                class="cn.itcast.home.action.HomeAction">
                <result type="json">
                    <param name="root">return_map</param>
                </result>
            </action>
        </package>

    在返回类型中指定了root参数,意思是只返回并格式化这个类属性为json。【注意:需要利用struts返回json对象的变量,要有对应的get方法。】

  • 相关阅读:
    QT代理Delegates使用实例(三种代理控件)
    delphi中的各种文件类型介绍
    猎豹傅盛:老大老二打仗老三就没了 不要边缘化
    老调重弹,大学有没有意义(没有利用好时间,读什么都没有用)
    应聘linux/ARM嵌入式开发岗位
    气死人不偿命,Q_OBJECT导致的C++报错,而且还看不明白(#ifdef没控制好,导致什么都不认识了)
    坚果云创业团队访谈:我们 DIY 云存储(不要过度关注竞争对手,尤其当我们还是小公司的时候)
    中国版dropbox“坚果云”和它背后的团队故事(大的优势就在于他为用户提供了设定多个文件夹的权利)
    一个灵巧的Delphi多播实事件现方案
    雷军的B面:那些赔到血本无归的失败投资案例
  • 原文地址:https://www.cnblogs.com/lm970585581/p/7372065.html
Copyright © 2020-2023  润新知