首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

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

大大们,求助呀!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()就可以解析出来,再一层一层的按名字取出来就行了。。。

热点排行