Action中使用Json

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("");

});

} 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 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中:

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();

return_map.put("msg", "success");

return_map.put("userList", userService.findObjects(queryHelper));

}

} catch (Exception e) {

e.printStackTrace();

}

return SUCCESS;

}

配置文件中:

class="cn.itcast.home.action.HomeAction">

return_map

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

相关创意

分期买手机划算吗?分期买手机首付多少?
beat365手机中文官方网站

分期买手机划算吗?分期买手机首付多少?

📅 07-06 👁️ 1958
熊猫直播起诉刘杀鸡事件前因后果 刘杀鸡为什么要解约
为什么美篇显示服务器错误
beat365手机中文官方网站

为什么美篇显示服务器错误

📅 07-09 👁️ 2589
兜的五笔怎么打?
beat365手机中文官方网站

兜的五笔怎么打?

📅 07-06 👁️ 8348
2025有趣的宝宝益智小游戏有哪些 有意思的宝宝游戏大全
罗纳尔多2球终结历史 德国0-2巴西文字直播实录
beat365投注网站

罗纳尔多2球终结历史 德国0-2巴西文字直播实录

📅 07-10 👁️ 1176
scenery更多的中文(繁體)翻譯
beat365手机中文官方网站

scenery更多的中文(繁體)翻譯

📅 08-28 👁️ 8323
曾售价数百万一台,如今不到十万元 爆火人形机器人到底该卖多少钱?