struts2.0学习笔记六(struts2.0通过ognl实现一个表单多个对象保存)

以前,我们如果在一个FORM中要实现在这个FORM中对多个对象同时保存,是件很麻烦的事情,在struts2.0中,我们可以利用ognl方式来实现多个对象的同时保存.

1.ognlCollection.jsp

方式一:

<form action="ognlcollection.action" method="post">
    <input type="text" name="products[0].name" value="aaa" />
    <input type="text" name="products[1].name" value="bbb" />
     <input type="text" name="products2[0].name" value="ccc" />
    <input type="text" name="products2[1].name" value="ddd" />
    <input type="submit" value="submit" />
</form>

在JAVA中有一个procutcs的LIST,该属性名要和JAVA中的属性名称对应起来.

方式二:通过用纯OGNL表达式来做

<s:iterator value="new int[3]" status="stat">
                <tr>
                    <td><s:textfield name="%{'products['+#stat.index+'].name'}"/></td>
                    <td><s:textfield name="%{'products['+#stat.index+'].price'}"/></td>
                    <td><s:textfield name="%{'products['+#stat.index+'].dateOfProduction'}"/></td>
                </tr>
            </s:iterator>

通过iterator方式,NEW出三个对象

"%{'products['+#stat.index+'].name'}"通过索引来标记不同的对象,然后插入到后台的LIST当中#stat.index表示取出其中的索引.

 

2.OgnlCollectionAction.java

package com.ognl.action;

import java.util.List;
import java.util.Map;

import com.bean.Product;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.Element;
import com.vo.User;

public class OgnlCollectionAction extends ActionSupport {
 
    List<User> users;
 List<Product> products;
 @Element(value = Product.class)
 List products2;

//在这里通过两种方式来写LIST.第一种通过泛型,所以不用指出保存在LIST中的对象类型.第二中则是以前不用泛型的方式.必须要加上一个Annotation来表示保存在LIST中的对象名.

 

 public List<Product> getProducts() {
  return products;
 }

 public void setProducts(List<Product> products) {
  this.products = products;
 }
 @Override
 public String execute() throws Exception {
  System.out.println("------------------");
  for(Product p : products)
  {
   System.out.println("products name : "+p.getName());
  }
  System.out.println("products2[0] name : "+((Product)products2.get(0)).getName());
  System.out.println("products2[1] name : "+((Product)products2.get(1)).getName());
  return null;
 }

 public List<User> getUsers() {
  return users;
 }

 public void setUsers(List<User> users) {
  this.users = users;
 }

 public List getProducts2() {
  return products2;
 }

 public void setProducts2(List products2) {
  this.products2 = products2;
 }

 

 

 

 /*public List getUsers2() {
  return users2;
 }

 public void setUsers2(List users2) {
  this.users2 = users2;
 }

 public Map<String, User> getUsersMap() {
  return usersMap;
 }

 public void setUsersMap(Map<String, User> usersMap) {
  this.usersMap = usersMap;
 }

 public Map getUsersMap2() {
  return usersMap2;
 }*/

 /*public void setUsersMap2(Map usersMap2) {
  this.usersMap2 = usersMap2;
 }*/
 

}

3.struts.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="struts2" extends="struts-default">
        <action name="ognl" class="com.ognl.action.OgnlAction">
            <result name="result">/ognl.jsp</result>
        </action>
        <action name="ognlcollection" class="com.ognl.action.OgnlCollectionAction">       
        </action>
    </package>
   
</struts>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值