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转换也是支持(略)
分享到:
相关推荐
在给定的文件中,标题和描述都提到了“哈夫曼编码11111111111111”,这可能是某个特定的哈夫曼编码或者是对哈夫曼编码的一种表示。然而,描述部分没有提供具体的信息,只是一系列重复的“方法”字样。 从标签和部分...
"ruoyi框架代码11111111111111"这个标题提到了一个名为“RuoYi”的框架,这可能是基于Java的管理后台系统框架,通常用于快速开发企业级应用。RuoYi框架旨在简化开发流程,提高开发效率,其特性包括但不限于模块化...
"cas-overlay-template-5.3_11111111111111_"是一个专门针对CAS单点登录系统的样例文档,旨在帮助开发者理解和应用这一功能强大的身份验证解决方案。 CAS(Central Authentication Service)是耶鲁大学开发的一个...
在IT行业中,"ET打板超排11111111111111"这个标题可能指的是一个专门用于服装设计和制造领域的计算机辅助设计(CAD)软件——ET打板。打板在服装制作中是至关重要的步骤,它涉及到精确地将设计转化为可裁剪的模板,...
【标题】"高德地图-枣园-修改11111111111111"可能指的是一个关于高德地图在枣园地区的更新或修正项目,其中涉及了多个地点的数据调整。这个标题可能代表了一次地图数据的维护工作,确保地图信息的准确性和实时性。 ...
在这个名为"函数接口日志GIT 11111111111111"的项目中,我们看到与Git相关的元素,可能是关于如何使用Git来管理和维护函数接口的日志记录。 首先,让我们深入理解Git的基本概念。Git的主要功能包括版本控制、分支...
"上传图片裁剪旋转11111111111111"这个标题暗示了我们将探讨一个与图片处理相关的功能,即用户上传图片后进行裁剪和旋转操作。这些功能通常用于用户自定义头像、产品图片展示或任何需要个性化图片编辑的场景。 首先...
数据结构资源11111111111111
pd18.py11111111111111
pd17.py11111111111111
Buffer使用记录11111111111111
pd13.py11111111111111
很抱歉,但根据您给出的信息,标题和描述都是"图片11111111111111",这并没有提供任何具体的IT知识内容。标签为"11",同样没有明确的含义。压缩包子文件的文件名称列表看起来包含了一些图像文件,如jpg和png格式的...
【描述】"typora11111111111111"可能是描述中的一个错误或者重复,没有提供具体的信息。不过,我们可以根据Typora的一般特性来展开讨论。Typora支持实时预览功能,即用户在输入Markdown语法时,会即时看到格式化的...
标题“Ring11111111111111”可能并不是一个标准的IT术语或项目名称,但我们可以假设它代表了一个特定的软件开发项目或者代码库。描述中的“别丢了”可能是在提醒用户这个压缩包的重要性,暗示其中包含的关键文件不应...
在“vue-11111111111111”这个项目中,我们可以推测这是一个使用Vue.js技术进行开发的项目,而“111111”可能是该项目的个性化标签,可能代表项目的特定版本、特性或者团队内部的编码规则。 Vue.js 的核心特性包括...
【标题】"QQ截图11111111111111" 提到的是腾讯QQ内置的截图工具,这是一个广泛应用于个人和办公环境的功能。QQ截图工具是腾讯QQ客户端的一个重要组成部分,它允许用户快速、方便地截取屏幕上的任何区域,并可以进行...
标题 "深度学习11111111111111" 暗示了我们关注的焦点是深度学习这一领域,而描述中的 "11111111111111" 没有提供具体信息,可能是由于误输入或隐私保护。不过,标签 "Python" 提示我们可能会用到 Python 这一编程...
硬件11111111111111
tomcat11111111111111