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>


 

~
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值