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 ...
随机推荐
- C语言深度挖掘
二级指针和回调函数的用法: #include <stdio.h> #include <stdlib.h> int add(int num1 ,int num2){ return ...
- spring整合freemarker
一.配置maven <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- jquery-1.3.2.js
Uncaught SyntaxError: Unexpected identifier
- funny_python 01 import antigravity
在Python里面import antigravity 会发现另一个小彩蛋 Tada~ 其实就是打开了xkcd的一个python主题漫画 鼠标停留在图片上,还会看到标题: "I wrote ...
- VS工程里的文件都是啥?如何打包? 2015-03-04
打完补充:以下内容全部是我一家之言,只是愿意分享,内容如有不妥还请见谅. ====================================================== 刚才接收了一份代 ...
- hdu 1106 排序(水题)
题目描述: 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由若干个'0'组成的, ...
- c#窗体虚线图形验证码设计
/************************窗体验证码背景图形设计及核心代码**********/ using System;using System.Collections.Generic;u ...
- DataInputStream和DataOutputStream
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInp ...
- 01 Apache Solr:提升检索体验 为什么是Solr
背景: 最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于CS模式的Windows桌面程序.然后对于每一个客户,我们可能需要为之定制比较个性化的特殊功能.于是,有一个 ...
- Architecture.the-reactive-manifesto
The Reactive Manifesto (Chinese Edition) Reference 1. The Reactive Manifesto http://www.reactivemani ...