前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Action中使用Json

Action中使用Json

作者头像
HUC思梦
发布2020-09-03 14:44:12
3530
发布2020-09-03 14:44:12
举报

1.前台页面中的ajax:

代码语言:javascript
复制
//根据部门查询该部门下的用户列表
        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”

代码语言:javascript
复制
    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 包,由struts将action中的变量组装成Json对象。

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

在Action中:

代码语言:javascript
复制
    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;
    }

配置文件中:

代码语言:javascript
复制
    <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方法。】

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档