1.JS数据对象对应到struts2的action的字段:
原理:根据url地址传递数据的方式
url="testaction.action?paramName1="+param1+"¶mName2="+param2;
对于paramName1的名字的写法不同可以给action中声明的不同类型的属性赋值,即:
1>单个字段名字==action中的属性名,则参数值直接赋值到action的对应属性;
2>param[i]形式,其中param名字对应到action中声明的数组,则param[i]的值直接赋值给action中的相同名字的数组的对应位置;
3>结合1>、2>以param[i].field的形式可以直接对action中声明的List<T>的对应坐标的T类型对象的field字段赋值;
4>param['key']的形式可以直接对action中的对应map进行赋值;
5>综合使用以上几种情况可以给更复杂的类型进行赋值;
JS,
a.在前台使用js的时候,可以定义一个简单的对象:
如:
var obj=new Object();//也可以为{param1:1,param2:2}
obj.param1='1';
obj.param2='2';
...
action:
.....
private String param1;
private String param2;
.........
使用Ext.urlEncode(obj)则直接可以将obj转换为一个 string:格式为:"param1=1¶m2=2",
将此字符串加在url后即可实现将obj中值传递到传递到action的效果;
b.实际上只要obj的字段可以被命名为actionObject.field的形式,即可实现对action中的对象的直接赋值,虽然,我们不可以直接定义js对象为{actionObject.field:value}的形式,
但实际上我可以这样定义{'actionObject.field1':'value1','actionObject.field2':'value2'}对象,
而,据我的测试,这时调用Ext.urlEncode(obj)得到的是"actionObject.field1=value1&actionObject.field2=value2",(o(∩_∩)o...)
此时,action如果存在这样的对象:
public class ActionTestObject{
private String field1;
private String field2;
.....
}
(action中声明)
private ActionTestObject actionObject;
.....
这样便可以从js赋值到对象;
另外,也可以这样obj['actionObject.field1']='value1'的方式创建js对象
c.结合2> 、a和b的思路,可以实现将js数组Array直接赋值给action中的数组或List;
如:
var obj ;
var array= [['1','2','3'],['4','5','6']];
var string='';
for(var index=0;index<array.length;index++){
obj=new Object();//也可以为:{'testList[0].id':'1','testList[0].name':'2','testList[0].value':'3'}.....
obj['testList['+index+'].id']=array[index][0];
obj['testList['+index+'].name']=array[index][1];
obj['testList['+index+'].value']=array[index][2];
string=string+Ext.urlEncode(obj);
}
===============pojo==================
public Class TestObj{
private String id;
private String name;
private Double value;
.........
}
===============action=================
................
private List<TestObj> testList;
................
这样即可获取到js的List
d.类似的道理,对js到action中的map转换也是支持(略)
分享到:
相关推荐
pd18.py11111111111111
pd17.py11111111111111
Buffer使用记录11111111111111
11111111111111
pd13.py11111111111111
ET打板超排11111111111111
函数接口日志GIT 11111111111111
vim7.1 7.4.7z 11111111111111
高德地图-枣园-修改11111111111111
方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法方法
jpg11111111111111
激活11111111111111
图片11111111111111
typora11111111111111
效能质量11111111111111
正则表达式11111111111111
vue-11111111111111
连鹏举11111111111111
逆变器11111111111111