批量封装对象(Bean)

不知道大家是否遇过这种情况,在一个页面里同时提交几个对象。例如,在发布产品的页面,同时发布几个产品。我在之前一个项目就遇到过这种需求,当时用的是Struts1.x。那是一个痛苦的经历,我在Google搜了很久都没有理想的结果。幸运的是,在Struts2.0中这种痛苦将一去不复返。下面我就演示一下如何实现这个需求。

首先,在源代码文件夹下的tutorial包中新建Product.java文件,内容如下:

packagetutorial;

importjava.util.Date;

publicclassProduct{

privateStringname;

privatedoubleprice;

privateDatedateOfProduction;

publicDategetDateOfProduction(){

returndateOfProduction;

}

publicvoidsetDateOfProduction(DatedateOfProduction){

this.dateOfProduction=dateOfProduction;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicdoublegetPrice(){

returnprice;

}

publicvoidsetPrice(doubleprice){

this.price=price;

}

}

然后,在同上的包下添加ProductConfirm.java类,代码如下:

packagetutorial;

importjava.util.List;

importcom.opensymphony.xwork2.ActionSupport;

publicclassProductConfirmextendsActionSupport{

publicList<Product>products;

publicList<Product>getProducts(){

returnproducts;

}

publicvoidsetProducts(List<Product>products){

this.products=products;

}

@Override

publicStringexecute(){

for(Productp:products){

System.out.println(p.getName()+"|"+p.getPrice()+"|"+p.getDateOfProduction());

}

returnSUCCESS;

}

}

接看,在同上的包中加入ProductConfirm-conversion.properties,代码如下:

Element_products=tutorial.Product

再在struts.xml文件中配置ProductConfirmAction,代码片段如下:

<actionname="ProductConfirm"class="tutorial.ProductConfirm">

<result>/ShowProducts.jsp</result>

</action>

在WEB文件夹下新建AddProducts.jsp,内容如下:

<%@pagecontentType="text/html;charset=UTF-8"%>

<%@taglibprefix="s"uri="/struts-tags"%>

<html>

<head>

<title>HelloWorld</title>

</head>

<body>

<s:formaction="ProductConfirm"theme="simple">

<table>

<trstyle="background-color:powderblue;font-weight:bold;">

<td>ProductName</td>

<td>Price</td>

<td>Dateofproduction</td>

</tr>

<s:iteratorvalue="newint[3]"status="stat">

<tr>

<td><s:textfieldname="%{'products['+#stat.index+'].name'}"/></td>

<td><s:textfieldname="%{'products['+#stat.index+'].price'}"/></td>

<td><s:textfieldname="%{'products['+#stat.index+'].dateOfProduction'}"/></td>

</tr>

</s:iterator>

<tr>

<tdcolspan="3"><s:submit/></td>

</tr>

</table>

</s:form>

</body>

</html>

在同样的文件夹下创建ShowProducts.jsp,内容如下:

<%@pagecontentType="text/html;charset=UTF-8"%>

<%@taglibprefix="s"uri="/struts-tags"%>

<html>

<head>

<title>HelloWorld</title>

</head>

<body>

<table>

<trstyle="background-color:powderblue;font-weight:bold;">

<td>ProductName</td>

<td>Price</td>

<td>Dateofproduction</td>

</tr>

<s:iteratorvalue="products"status="stat">

<tr>

<td><s:propertyvalue="name"/></td>

<td>$<s:propertyvalue="price"/></td>

<td><s:propertyvalue="dateOfProduction"/></td>

</tr>

</s:iterator>

</table>

</body>

</html>

相关推荐