Struts2之提交对象数组至后台
struts2中有许多很好的特性,比如在设置好getter和setter方法后,加上前端的匹配设置,后台即可自动将前端输入的数据转换为后台的相应的对象。
如现在传入一个Person类的对象,其中Person类中有name和age等属性。
class Person {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
则前端对应的表单写法如下
<form action="addperson" method="post">
<input type="text" name="person.name">
<input type="number" min="0" max="200" name="person.age">
<button type="submit"></button>
</form>
这个时候前端提交action至struts.xml,根据action匹配对象的Java类实现功能。
<action name="addperson" class="com.wsy.action.PersonAction" method="addPerson">
<result>/WEB-INF/content/success.jsp</result>
</action>
即调用到PersonAction类中addPerson方法。PersonAction代码如下:
public class PersonAction extends ActionSupport {
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String addPerson() {
// ...
return SUCCESS;
}
}
如上所述,即完成了一个添加Person的工作步。
但是若传入的不是一个对象,而是一组对象呢?
不难想到,前端所需要改的部分即是input标签中的name属性。例如添加2个Person,前端修改如下:
<form action="addperson" method="post">
<input type="text" name="person[0].name">
<input type="number" min="0" max="200" name="person[0].age">
<input type="text" name="person[1].name">
<input type="number" min="0" max="200" name="person[1].age">
<button type="submit"></button>
</form>
struts.xml其实是不需要改变的。需要改变的应该是PersonAction类。因为获取的是一组Person,所以其中的变量应该也改为一组变量。即:
public class PersonAction extends ActionSupport {
private ArrayList<Person> person = new ArrayList<>(); // 这里一定需要分配,否则将提示空指针错误
public ArrayList<Person> getPerson() {
return person;
}
public void setPerson(ArrayList<Person> person) {
this.person = person;
}
public String addPerson() {
// ...
return SUCCESS;
}
}
但是此时,运行可知,并不可以正确的导入数据。原因大概是后台对传入的数组无法识别数组中的每个元素是什么?
所以需要一个配置文件即PersonAction-conversion.properties。该文件需要放在与PersonAction所属于的包同级的位置。
通过该配置文件说明数组中的元素的属于的类。
Element_person=dao.Person
CreateIfNull_person=true
配置文件的第一行说明了元素属于的类的类型。
第二行说明若数组为空也创建该数组。
至此,即完成了Struts2提交对象数组至后台的操作。
Struts2之提交对象数组至后台的更多相关文章
- ajax传递数组、form表单提交对象数组
在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...
- struts2 jsp提交对象数据要这么干
不要每个属性都 setter getter .. 这样页面很难看... 直接 把对象变成一个成员变量会比较好. Java code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- form表单传递对象数组
ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...
- Ajax 向后台提交一个 JavaScript 对象数组?
var postArray= new Array(); var temp = new Object(); temp.id='1'; temp.name='test'; postArray.push(t ...
- MVC中用ajax提交json对象数组
应用场景:在前端用ajax向服务器提交json对象数组,在controller的以对象数组作为函数的参数,提交的json数组直接转为服务器端的对象数组. 如: 要将json对象数组[{Id:1,Nam ...
- Json:前台对象数组传到后台解析
本文转自:http://blog.csdn.net/kymegg/article/details/50964581 方法:使用JsonArray进行解析 步骤: 一.引入一系列JAR包 要使程序便于解 ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- JS AJAX传递List数组到后台(对象)
今天在写代码的时候,碰到的问题,百度了一下,发现原来AJAX传递List数据是可以的,之前还一直用JSON序列化(new Array()数组设置)进行传值的. var _list = {}; //等价 ...
- 如何将PHP对象数组转换成普通数组
/** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...
随机推荐
- 信鸽推送(XGPush)
先放入两个链接: iOS信鸽接入官方文档:http://developer.qq.com/wiki/xg/iOS接入/iOS%20SDK完整接入/iOS%20SDK完整接入.html 信鸽开放平台:h ...
- Android菜鸟成长记12 -- ORMLite的简单使用
在我们的开发中,为了提高开发效率,我们一般都会使用到框架,ormilte则是我们必不可少的数据库框架. 对于ORMLite我也是今天才刚刚接触,我们先从一个简单的项目来了解它吧. ORMLite ja ...
- R作图
R一般的散点图:plot() 折线图:plot() lines() 柱状图 barplot() 箱子图 boxplot() 直方图:hist() 热力图:heatmap 画地图的:拓展包 m ...
- 配置FastReport,FastReport报表加载不出来
插件链接: Demo地址:http://pan.baidu.com/s/1dEXUvsP FastReport.Net软件地址:https://pan.baidu.com/s/1c2kNBVi ...
- python——请求服务器(http请求和https请求)
一.http请求 1.http请求方式:get和post get一般用于获取/查询资源信息,在浏览器中直接输入url+请求参数点击enter之后连接成功服务器就能获取到的内容,post请求一般用于更新 ...
- JavaScript内置对象之数组
一.JavaScript对象之数组 1.创建数组的方式 (1)使用Array构造函数 语法:new Array() 小括号()说明: -预先知道数组要保存的项目数量 -向Array构造函数中传递数组应 ...
- modelsim无法识别include文件的解决方法
modelsim发现include关联的文件编译报语法错误,文件名需要写绝对路径,即使这个文件和工程其它文件在一个目录上.例如只写成 `include "c0_ddr3_model_para ...
- Source Insight 3.X utf8支持插件更新
[更新内容] 修复了当UTF8文件外部改变时,SI无法检测到的bug. 实现 [下载地址] 点我 [计划] 未来(无限长)优化utf8编码检测规则,提高准确度.
- 数组 Arrays类
1.数组是一组变量集合,用来存储相同数据类型的一组数据的连续的空间. *数组名(标识符)连续空间首地址. *元素下标标明元素在数组中的位置,从0开始. *每个元素都可以通过下标来访问. *数组长度固定 ...
- iOS.ReactNative-3-about-viewmanager-uimanager-and-bridgemodule
RCTViewManager and RCTUIManager 1. RCTViewManager 1.1 RCTViewManager 实现了接口RCTBridgeModule @interface ...