`

11111111111111

 
阅读更多

1.JS数据对象对应到struts2的action的字段:
原理:根据url地址传递数据的方式
url="testaction.action?paramName1="+param1+"&paramName2="+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&param2=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转换也是支持(略)

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics