提交一个list

为了让系统知道List里的元素类型,为了让系统的类型转换器起作用,有两种方法:

1、使用泛型来限制集合里元素的类型;eg:在Action类代码中关于user属性的泛型定义为:private List<user> user;

2、使用Struts2的配置文件:使用局部类型转换的配置文件来指定集合元素的数据类型。

为了在局部类型转换文件中指定集合元素的类型,应该在局部类型转换文件中增加如下的key-value对:

Element_xxx = 复合类型 (说明:key-value对中的Element是固定的,xxx是Action中的集合属性名,复合类型是集合元素类型的全限定数类名[应该增加完整的包前缀])

eg:Element_user = lee.User    //指定Action类的user集合属性的元素为lee.User实例

下面先介绍一下局部类型转换器的注册,要注册类型转换吕只需提供文件名为如下格式的文件:

  ActionName-conversion.properties:ActionName是需要转换器第一次的Action的类名,后面的-conversion.properties字符串则是固定部分。

   eg:对于LoginAcion.java类,则应该提供的类型转换器注册文件的文件名为:LoginAction-conversion.properties,该文件由key-value对组成。文件内容为: propertyName=类型转换器类

  LoginAction-conversion.properties文件应该与LoginAction.java文件放在相同路径下(如LoginAction.java的包为lee,则该文件也应放在包lee内)。

这么多文字描述还是没有来一个实例要讲的清楚,要让人容易明白,嘿嘿,现在下面就来个实例看看吧!!

FeeItemAction.java

package lee;
public class FeeItemAction extends ActionSupport implements ServletRequestAware
{
    private HttpServletRequest request;
    private List<StkMasModel> modelList;//提交list
    
    public String execute() throws Exception
    {
        FeeItem feeItem = new FeeItemImp();
        if(modelList != null && modelList.size() > 0)
       {
	for(StkMasModel model:modelList)
	{
	       feeItem = new FeeItemImp();
	       feeItem.setStkPkNo(model.getStk_pk());
	       feeItem.setCatName(model.getCatName());
	       feeItem.setCatPkNo(model.getCatPkNo());
	       feeItem.setStkName(model.getName());
	       itemService.saveOrUpdateFeeItem(feeItem);		
	}
				
       }
       else
      {
	log.warn("*********The size of model less than zero!********");
      }     }

                public void setServletRequest(HttpServletRequest request)
	{
		this.request = request;
	}
	public List<StkMasModel> getModelList()
	{
		return modelList;
	}
	public void setModelList(List<StkMasModel> modelList)
	{
		this.modelList = modelList;
	}
}

 FeeItemAction-conversion.properties

Element_modelList=lee.StkMasModel

 

StkMasModel.java

package lee;
public class StkMasModel
{
	private Long stk_pk;
	private String catName; 
	private Long catPkNo;	
	private String name; 
         public String getCatName()
	{
		return catName;
	}
	public void setCatName(String catName)
	{
		this.catName = catName;
	}
     //省略了其它的get 和set...
}

 list.jsp

<form action="saveFeeItems.html" id="saveFeeItemsForm" method="post">
<s:iterator status="st" value="#request.reList" id="stkList">
<input type="hidden" name="modelList[${st.index}].stk_pk" value=''>
<input type="hidden" name="modelList[${st.index}].catName" value=''>
<input type="hidden" name="modelList[${st.index}].catPkNo" value=''>
<input type="hidden" name="modelList[${st.index}].name" value=''>
</s:iterator>
<input type="submit" value="提交">
</form>

 以上文件为对应关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值