在项目开发过程中,很多时候需要同时提交多条数据到服务器,例如在客户端要同时将下表中姓名,年龄,职位等信息同时提交到服务器,实现批量添加。
姓名 | 年龄 | 职位 |
张三 | 2岁 | 学生 |
李四 | 1岁 | 学生 |
这里介绍一种方法供大家参考。具体步骤如下:
第一步:在项目中新建User类,具体代码如下:
package cn.test.Bean;
public class User {
private String name;//姓名
private int age;//年龄
private String position;//职位
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
}
第二步:创建ProlistAction,代码如下:
package cn.test.action;
import java.util.List;
import cn.test.Bean.User;
import com.opensymphony.xwork2.ActionSupport;
public class ProlistAction extends ActionSupport {
private List<User> prolist;// 泛型对象prolist
public List<User> getProlist() {
return prolist;
}
public void setProlist(List<User> prolist) {
this.prolist = prolist;
}
public String UseraddUI() throws Exception {
return "UaddUI";
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
if(prolist!=null)
{
for(int i=0;i<prolist.size();i++)
{
System.out.println(prolist.get(i).getName());
}
}
return "Usuccess";
}
}
第三步,新建UaddUI.jsp文件,用来显示输入界面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<style type="text/css">
.addpro{
list-style: none;
width: 800px;
margin: 0 0 0 180
}
.addpro li
{
border: solid thin #cccccc;
list-style: none;
float: left;
width:150px;
text-align: center;
}
</style>
<ul id="h" class="addpro">
<li style="font-weight: bold;"> 姓名 </li>
<li style="font-weight: bold;"> 年龄 </li>
<li style="font-weight: bold;"> 职位</li>
</ul>
<br>
<s:form action="U_execute" theme="simple" cssStyle="margin-top:0px;">
<s:iterator value="new int[3]" status="st">
<ul id="h" class="addpro">
<li><s:textfield name="%{'prolist['+#st.index+'].name'}" size="15"></s:textfield></li>
<li><s:textfield name="%{'prolist['+#st.index+'].age'}" size="15"></s:textfield></li>
<li><s:textfield name="%{'prolist['+#st.index+'].position'}" size="15"></s:textfield></li>
</ul>
</s:iterator>
<s:submit value="确认添加" cssStyle="margin-left:450px;"></s:submit>
</s:form>
关键代码说明:
在上述表单From中,使用struts的iterator 标签来循环输出了三行内容,每行内容表示一个用户的信息。这里要注意的是textfield标签的name属性值。例如name="%{'prolist['+#st.index+'].age}" ,其中'prolist是Action类型的属性名,#st.index是要集合的下表索引,age是泛型集合类型User类中的属性名。
第四步,创建Useccess.jsp,来显示刚添加的信息
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:iterator value="prolist" var="pro" status="st">
<s:property value= "#pro.name"/>
<s:property value="#pro.age"/>
<s:property value="#pro.position"/>
</s:iterator>
这里使用iterator标签循环遍历集合对象prolist,使用property 标签 输出该集合元素中的属性。
第五步,配置struts.xml文件
<action name="U_*" class="cn.test.action.ProlistAction" method="{1}">
<result name="UaddUI">/WEB-INF/jsp/UaddUI.jsp</result>
<result name="Usuccess">/WEB-INF/jsp/Usuccess.jsp</result>
</action>
第六步,部署项目,启动tomcat,在浏览器中输入:http://localhost:8080/MyWeb/U_UseraddUI
注意,大家如果要把客户端提高过来的批量数据保存到数据库的话,可以先在Action中把list中的对象全部取出来,再保存到数据库中。
参考实现代码:
for(int i=0;i<prolist.size();i++)
{
prolist.get(i);//得到保存了客户端数据的对象
}
再保存即可。