当前位置: 代码迷 >> Java Web开发 >> Extjs解析struts2返回的json数据异常求给指点一下 多谢啦。(分不多了,不好意思)。很急的
  详细解决方案

Extjs解析struts2返回的json数据异常求给指点一下 多谢啦。(分不多了,不好意思)。很急的

热度:390   发布时间:2016-04-17 00:53:24.0
Extjs解析struts2返回的json数据错误求大虾给指点一下 谢谢啦。(分不多了,不好意思)。很急急急的
我用的是struts2.1.8的struts2-json-plugin-2.1.8.1.jar插件 还有json-lib-2.4-jdk15.jar

java代码就是提供set和get方法
Java code
int count = fieldManageService.getFieldmanageCount(name);List<Fieldmanage> list = fieldManageService.getFieldmanageList(name, start, limitNo);JSONArray array = JSONArray.fromObject(list);System.out.println(array.toString()+"dsds111sdsd");this.setData(array.toString());this.setTotalCount(count);


xml配置
XML code
        <action name="fieldManage_*" method="{1}" class="fieldManageAction">        <interceptor-ref name="json"></interceptor-ref>        <result type="json">            <param name="includeProperties">totalCount,data</param>        </result>        </action>


前台的Ext
JScript code
        this.vstore = new Ext.data.JsonStore({            url:this.listUrl,            totalProperty : 'totalCount',            root : 'data',            fields:this.fields,        })this.grid = new Ext.grid.GridPanel({            store:this.vstore,            loadMask: {msg:'正在加载数据,请稍侯……'},            tbar:[                {                    text:"添加",                    iconCls:"addIcon",                    handler:this.addActivity,                    scope:this                },                    "-",                {                    text:"修改",                    iconCls:"editIcon",                    handler:this.editActivity,                    scope:this                },                    "-",                {                    text:"删除",                    iconCls:"deleteIcon",                    handler:this.delActivity,                    scope:this                }                ],            frame:true,            columns:this.getColumns(),            bbar:this.pagingToolbar        })        

 
前台FF检测到的json是[{"fieldManageDesc":"海都餐厅门口","fieldManageId":1,"fieldManageName":"餐厅门口","isuse":"1"}]是对的、但是Ext解析的时候应该是一条、但是他把这个串拆分开了、拆成85条了,例如第一条就是一个“[”,第二个就是“{”,一次类推、我很纳闷了。。

------解决方案--------------------

仍然用这个配置
<action name="fieldManage_*" method="doSomeThing" class="fieldManageAction">
<interceptor-ref name="json"></interceptor-ref>
<result type="json">
//后边这个配置不要了,默认把类成员全转成json对象
//<param name="includeProperties">totalCount,data</param>
</result>
</action>
方法名改成了 doSomeThing ,以此为例

//类名不变
public class fieldManageAction
{
//定义类成员,需要有get和set方法。 有get方法的就会自动转换到返回的json对象里
//除非在参数里用 excludeProperties 排除或是在类里用@JSON(serialize=false) 排除
//如果是Spring 自动注入的,一定不要给get方法或是一定要把它排除
private int totalCount; //整型
private Date today; //日期
private String memo; //字符串
private List<Fieldmanage> list; //对象 也是自动转换
//以上都给 get 和 set 方法


//这是ACTION 方法,方法里只需要对要返回的类成员赋值就行了
public String doSomeThing()
{
//……………………调用逻辑层方法处理逻辑 
doBusinessThing();
// 赋值 
totalCount=10; //赋值这里都随便取值了
  相关解决方案