Ext_json_Struts_Json_ext之间的转换

来源:互联网 发布:linux怎么复制目录 编辑:程序博客网 时间:2024/05/21 22:37

网络牛人写的我进行处理一下:

strusts.xml 配置

<package name="ext_json_struts2_json_ext" extends="json-default">
                  //这里一定要继承json-default否则下面的type为非法
       <interceptors>
            <interceptor-stackname="myDefaultStack">
               <interceptor-ref name="json"/>
                <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
         </interceptors>
         <default-interceptor-refname="myDefaultStack"/>

        
        <actionname="updateTaskUser" class="adminDefaultViewAction" method="updateTaskUser">
            <result type="json">   // 这里要就行返回对象指定
               <param name="root">optionResult</param>//这里是返回
            </result>
        </action>            
    </package>   

 

jsp页面的js

Ext.define('Candidates', {
          extend:'Ext.data.Model',
          fields: [
                    {name: 'key',    type: 'string'},
                   {name: 'name',  type: 'string'}
         ]
});
//定义数据模型


 var data = {
    users: [
        {
            key:'jack1',
            name:'jack1'
        },
        {
            key: 'jack2,
            name:'jack2'
        }
    ]
};

//创建数据源


var candidatesStore = Ext.create('Ext.data.Store', {
    autoLoad: true,
    model: 'Candidates',
    data : data,
    proxy: {
        type: 'memory',
        reader: {
            type:'json',
            root:'users'
        }
    }
});

//这里是数据源和数据模型通过代理转化成一个库

var length = candidatesStore.getCount( );//得到该库的长度以便在js中转成json对象

var jsonCandidates= [];//json是一个数组类型 所以定义一个数组

for(var j=0;j< length;j++){
    jsonCandidates.push({
        key:candidatesStore.getAt(j).get('key'),
       name:candidatesStore.getAt(j).get('name'),
    });
}//转换成json对象

Ext.Ajax.request({
    url : '<%=rootPath%>/updateTaskUser.action',
    method:'post',

jsonData:{

username: 'jack',//username ,指明bean中的字段

processInstanceUUID: 'test',//processUUID,指明bean中的字段

  changeCandidates :jsonCandidates //要进行提交的json

   } ,

   success : function(response, options) {
   //     popWindow.close();//返回进行关闭
    }
}

javabean
public class Candidates {
    private String name;
    private String key;
    public String getKey() {
        return key;
    }
    public void setKey(String key) {
        this.key = key;
    }
 
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Action
public class TestAction extends ActionSupport {
    List<Candidates> changeCandidates;
    String username ;
    String processInstanceUUID;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
    
    public List<Candidates> getChangeCandidates() {
        return changeCandidates;
    }

    public void setChangeCandidates(List<Candidates>changeCandidates) {
        this.changeCandidates = changeCandidates;
    }
    public String getProcessInstanceUUID() {
        return processInstanceUUID;
    }

    public void setProcessInstanceUUID(StringprocessInstanceUUID) {
        this.processInstanceUUID =processInstanceUUID;
    }

//进行action方法处理
    public String updateTaskUser() {
        optionResult =xxxService.xxxxx(changeCandidates,username, processInstanceUUID);
        return SUCCESS;
    }    
}