读书人

大大们呀!struts2返回json的有关问

发布时间: 2013-12-04 17:21:02 作者: rapoo

大大们,求助呀!struts2返回json的问题
struts2返回json串在jsp页面的处理:
直接上代码了:
action:中


private String JsonString;
public String getJsonString() {
return JsonString;
}
public void setJsonString(String jsonString) {
JsonString = jsonString;
}
下面是方法中的代码:
JSONArray jsonArray = JSONArray.fromObject(list_dir);
this.JsonString = jsonArray.toString();


struts2中的配置:

<package name="test.action" extends="json-default" namespace="/sm">
<action name="scanPointPath" class="smAction" method="scanPointPath" >
<result name="success" type="json">
<param name="includeProperties">JsonString</param>
</result>
</action>


请求时候用的ajax请求,代码如下:

$.ajax( {
type : "POST",
url : "scanPointPath.action",
dataType:"json",
data : {
"postValue":leavePath
},
aysnc : false,
success : function(data) {
alert("dddd"+data); },
error : function() {
alert("cuowu");
}
});


出现的问题:为什么我在前台得到的不是json格式的字符串?在前台弹出的是【object Object】

请问各位大大为什么会出现这个问题?
还有:js中["xxxxxx","yyyyy"] 怎么处理成list集合?
备注:我通过struts返回给jsp的就是类似上面那种json格式的字符串。
[解决办法]
不知道JSON返回到JSP的东西是什么,你可以先判断一下这个【object Object】是什么类型?

success : function(data) {
alert("dddd"+data.constructor);//这里可以输出你返回的json的类型
},


对于js的["xxxxxx","yyyyy"],这个在js里面就是数组。
数组你懂吧?
在js里面可以进行循环:

var arr = ["xxxxxx","yyyyy"];
for(var i = 0, j = arr.length; i<j; i++){
alert(arr[i]);
}


对于Structs2,我一般是这样配置的:

<action name="scanPointPath" class="smAction" method="scanPointPath" >
<!-- 对于返回json 的action,我这里从来不写东西-->
</action>

上面的xml配置我没有写
<result name="success" type="json">
<param name="includeProperties">JsonString</param>
</result>
我会在java的aciton的方法中,采用response得到PrintWriter,然后用它打回json到前台。
[解决办法]
Struts2返回JSON的话,Action的方法不需要返回值


public void loginList(){
DistrictBiz db = new DistrictBizImpl();
List<District> listD =db.getAllDistrict();
//使用JSON工具类打印JSON字符串
JsonWriteUtil.writeJson(resp, listD);
}


[解决办法]
附带工具类



/**
* 把对象转换成JSON后,再进行打印
* @param obj
*/
public static void writeJson(HttpServletResponse response, Object obj) {
String str = JSON.toJSONString(obj);
try {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write(str);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
}


[解决办法]
struts2配置文件里面的package要继承json-default

<package name="json" namespace="/" extends="json-default">

[解决办法]
你得把json字符串写出去吧!
[解决办法]
得到的是一个json对象,在前端用方法parseJSON()就可以解析出来,再一层一层的按名字取出来就行了。。。

读书人网 >Java Web开发

热点推荐