struts2一次提交多个对象
楼主的这个业务要求可以先用一个类(TestProduct)封装那几个字段,然后再把TestProduct放到一个Map里(Map<String, TestProduct> products)。具体代码如下:
products_ognl.jsp 这个产品录入界面:
HTML code
<%@ page language=”java” pageEncoding=”UTF-8″%>
<%@ taglib prefix=”s” uri=”/struts-tags”%>
<html>
<head>
<title>使用OGNL表达式进行类型转换</title>
</head>
<body>
字符串到Product的转换<p/>
<form action=”product.action” method=”post”>
<table border=”1″>
<tr>
<td>产品1</td>
<td>
<s:textfield label=”名称” name=”products['product1'].name” />
<s:textfield label=”价格” name=”products['product1'].price” />
<s:textfield label=”数量” name=”products['product1'].count” />
</td>
</tr>
<tr>
<td>产品2</td>
<td>
<s:textfield label=”名称” name=”products['product2'].name” />
<s:textfield label=”价格” name=”products['product2'].price” />
<s:textfield label=”数量” name=”products['product2'].count” />
</td>
</tr>
<tr>
<td>产品3</td>
<td>
<s:textfield label=”名称” name=”products['product3'].name” />
<s:textfield label=”价格” name=”products['product3'].price” />
<s:textfield label=”数量” name=”products['product3'].count” />
</td>
</tr>
</table>
<input type=”submit” value=”提交”/>
</form>
</body>
</html>
TestProductAction.java
Java code
public class TestProductAction extends ActionSupport {
private Map<String, TestProduct> products;
public String execute() throws Exception {
TestProductDAO testProductDAO = new TestProductDAO();
testProductDAO.saveProducts(getProducts());
return SUCCESS;
}
public void setProducts(Map<String, TestProduct> products) {
this.products = products;
}
public Map<String, TestProduct> getProducts() {
return products;
}
}
TestProduct.java
Java code
public class TestProduct implements Serializable {
private Long id = null;
private String name;
private float price;
private int count;
public TestProduct() {}
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPrice(float price) {
this.price = price;
}
public float getPrice() {
return price;
}
public void setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
}
TestProductDAO.java
Java code
public class TestProductDAO {
public void saveProducts(Map<String, TestProduct> products) {
Session session = null;
Transaction tx = null;
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
for (TestProduct product : products.values()) {
session.save(product);
}
tx.commit();
} catch (HibernateException e) {
try {
tx.rollback();
} catch (HibernateException rbe) {
rbe.printStackTrace();
}
} finally {
HibernateSessionFactory.closeSession();
}
}
}
productsview_ognl.jsp 这个是产品显示界面:
Java code
<%@ page language=”java” pageEncoding=”UTF-8″%>
<%@ taglib prefix=”s” uri=”/struts-tags”%>
<html>
<head>
<title>显示Product的属性值</title>
</head>
<body>
<table border=”1″>
<tr><td>产品</td><td>名称</td><td>价格</td><td>数量</td></tr>
<s:iterator id=”product” value=”products”>
<tr>
<td>${product.key}</td>
<td>${product.value.name}</td>
<td>${product.value.price}</td>
<td>${product.value.count}</td>
</tr>
</s:iterator>
</table>
</body>
</html>
http://blog.csdn.net/a385833253/article/details/7082943