网络牛人写的我进行处理一下:
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;
}
}