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之提交对象数组至后台的更多相关文章

  1. ajax传递数组、form表单提交对象数组

    在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...

  2. struts2 jsp提交对象数据要这么干

    不要每个属性都 setter getter .. 这样页面很难看... 直接 把对象变成一个成员变量会比较好. Java code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  3. form表单传递对象数组

    ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...

  4. Ajax 向后台提交一个 JavaScript 对象数组?

    var postArray= new Array(); var temp = new Object(); temp.id='1'; temp.name='test'; postArray.push(t ...

  5. MVC中用ajax提交json对象数组

    应用场景:在前端用ajax向服务器提交json对象数组,在controller的以对象数组作为函数的参数,提交的json数组直接转为服务器端的对象数组. 如: 要将json对象数组[{Id:1,Nam ...

  6. Json:前台对象数组传到后台解析

    本文转自:http://blog.csdn.net/kymegg/article/details/50964581 方法:使用JsonArray进行解析 步骤: 一.引入一系列JAR包 要使程序便于解 ...

  7. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

  8. JS AJAX传递List数组到后台(对象)

    今天在写代码的时候,碰到的问题,百度了一下,发现原来AJAX传递List数据是可以的,之前还一直用JSON序列化(new Array()数组设置)进行传值的. var _list = {}; //等价 ...

  9. 如何将PHP对象数组转换成普通数组

    /** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...

随机推荐

  1. 高级php面试题

    在网上看到一些高级php 的面试题目.. 最近接连面试了几家公司,有些重要问题记录一下,督促自己学习提高,同时希望给朋友们一些帮助.内容很多,一点点完善,一步步学习..有些是面试被问,有些是招聘要求, ...

  2. MFC CEdit改变字体大小的方法

    方法很多,这里讲解两种比较简单的方法,也是从google上搜索来的. 方法一: CWnd* pEdit; pEdit = GetDlgItem(IDC_EDIT_ONE); ASSERT(pEdit ...

  3. 转自pnljs 委托(Func<int,bool>)

    随笔- 147 文章- 0 评论- 16 Func的介绍   经常看到  Func<int, bool>...这样的写法,看到这样的就没有心思看下去了.我们学技术还是需要静下心来. 对Fu ...

  4. 大毕设-MATLAB-常用知识回顾

    要用到FIR滤波器和抽样器下面研究这两个的Matlab实现: Fir滤波器: matlab上fir滤波器的关键字是fir1 在command窗口输入help fir1出现帮助文档: >> ...

  5. 简单C语言文法

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...

  6. 查看linux中某个端口是否被占用

    1.netstat -tunlp | grep **** -t--tcp  -u--udp -l--listening -n --numeric -p--program -a--all 2.lsof ...

  7. centos7安装数据库

    centos7的yum源中貌似没有正常安装MySQL时的mysql-server. 那么就需要从官网下载了. 下面是安装mysql的命令: # wget http://dev.mysql.com/ge ...

  8. json_decode返回null 和synax error原因及处理

    $checkLogin ='[{"gdsincode":"1103293","gdsname":"鲜美来带鱼段800g" ...

  9. C++STL学习笔记_(1)vector知识

    #include<iostream> using namespace std; #include "vector" //数组元素的 添加和删除 void main31( ...

  10. 自定义ViewGroup

    ViewGroup --->A ViewGroup is a special view that can contain other views (called children.) The v ...