spring mvc表单复杂类型数据绑定

spring mvc提供了和struts2差不多类似的数据绑定功能。具体如下:

首先是jsp页面:

****************************TBill*******************************<br><br>
单据编号:<input type="text" name="TBill.sbillno"> 单据类型:<input type="text" name="TBill.ibilltype"><br/><br/>
 客户在仓库的编号:<input type="text" name="TBill.scustomerno"> 对方客户编号:<input type="text" name="TBill.sdistcustomerno"><br/><br/>
单据操作类型:<input type="text" name="TBill.ioperatortype"> 操作人:<input type="text" name="TBill.soperator"><br/><br/>
操作时间:<input type="text" name="TBill.doperatetime"> 备注:<input type="text" name="TBill.remark"><br/><br/>


<div id="ew12LineTemplate2">
--------------------------List<TIndentureItem>---------------------<br><br>
会员在仓库的编号:<input type="text" name="TDeliveryDo[0].list[0].scustomerno"> 会员编号:<input type="text" name="TDeliveryDo[0].list[0].smemberno">入库单号:<input type="text" name="TDeliveryDo[0].list[0].sstockno"> 卡号:<input type="text" name="TDeliveryDo[0].list[0].scardno"><br/><br/>
种类:<input type="text" name="TDeliveryDo[0].list[0].svariety"> 品名:<input type="text" name="TDeliveryDo[0].list[0].scommodityname">规格:<input type="text" name="TDeliveryDo[0].list[0].sspec"> 材质:<input type="text" name="TDeliveryDo[0].list[0].smaterial"><br/><br/>
厂家:<input type="text" name="TDeliveryDo[0].list[0].sproducer"> 执行标准:<input type="text" name="TDeliveryDo[0].list[0].sstandard">炉批号:<input type="text" name="TDeliveryDo[0].list[0].sdonkey"> 库位:<input type="text" name="TDeliveryDo[0].list[0].slocation"><br/><br/>
计量方式:<input type="text" name="TDeliveryDo[0].list[0].smeasurement"> 件数单位:<input type="text" name="TDeliveryDo[0].list[0].sunit"> 入库日期:<input type="text" name="TDeliveryDo[0].list[0].dindate"> 入库件数:<input type="text" name="TDeliveryDo[0].list[0].iinpackage"> <br/><br/>
入库重量):<input type="text" name="TDeliveryDo[0].list[0].finweight"> 出库件数:<input type="text" name="TDeliveryDo[0].list[0].ioutpackage"> 出库重量:<input type="text" name="TDeliveryDo[0].list[0].foutweight"> 当前件数:<input type="text" name="TDeliveryDo[0].list[0].ipackage"> <br/><br/>
当前重量:<input type="text" name="TDeliveryDo[0].list[0].fweight"> 锁定件数:<input type="text" name="TDeliveryDo[0].list[0].ilockpackage"> 锁定重量:<input type="text" name="TDeliveryDo[0].list[0].flockweight"> 变动件数:<input type="text" name="TDeliveryDo[0].list[0].ialertpackage"><br/><br/>
变动重量:<input type="text" name="TDeliveryDo[0].list[0].falertweight"> 锁定变动重量:<input type="text" name="TDeliveryDo[0].list[0].falertlockweight"> 锁定变动重量:<input type="text" name="TDeliveryDo[0].list[0].ialertlockpackage"><br/><br/> 
锁定类型:<input type="text" name="TDeliveryDo[0].list[0].ilocktype">
</div>

************************TDelivery*******************************<br><br>
提货单编号:<input type="text" name="TDelivery.sorderno"> 货主会员名称:<input type="text" name="TDelivery.smembername"> 货主EE会员编号:<input type="text" name="TDelivery.smemberno"><br/><br/>
货主在仓库的编号:<input type="text" name="TDelivery.smemberwarehouseno"> 买方会员名称:<input type="text" name="TDelivery.sbuyermembername"> 买方EE会员编号:<input type="text" name="TDelivery.sbuyersmemberno"><br/><br/>
买方在仓库编号:<input type="text" name="TDelivery.sbuyersmemberwarehouseno"> 开单日期:<input type="text" name="TDelivery.dorderdate"> 有效期:<input type="text" name="TDelivery.dvaliddate"><br/><br/>
证件类型:<input type="text" name="TDelivery.scardtype"> 提货手机 :<input type="text" name="TDelivery.smobile"> 车牌号:<input type="text" name="TDelivery.scarno"><br/><br/>
是否要印章:<input type="text" name="TDelivery.bisstamp"> 备注:<input type="text" name="TDelivery.sremark"><br/><br/>

对应封装的javabean 如下:

public class EW010012Bean {
	private TBill TBill;
	private TDelivery TDelivery;
	
	private List<TDeliveryDo> TDeliveryDo;
	
	public TBill getTBill() {
		return TBill;
	}
	public void setTBill(TBill tBill) {
		TBill = tBill;
	}
	
	public List<TDeliveryDo> getTDeliveryDo() {
		return TDeliveryDo;
	}
	public void setTDeliveryDo(List<TDeliveryDo> tDeliveryDo) {
		TDeliveryDo = tDeliveryDo;
	}
	
	public TDelivery getTDelivery() {
		return TDelivery;
	}
	public void setTDelivery(TDelivery tDelivery) {
		TDelivery = tDelivery;
	}
	
	
}

public class TBill {

	private String sbillno;
	private int ibilltype;
	private String scustomerno;
	private String sdistcustomerno;
	
	private int ioperatortype;
	private Date   duptime;//单据上传时间
	private String soperator;//操作人
	private Date  doperatetime;//操作时间
	private String remark;
	private Date dorderdate;
}

public class TDelivery {
	
	private String sorderno;//提货单编号
	private String smembername;//货主会员名称
	private String smemberno;//货主会员编号
	private String smemberwarehouseno;//货主会员仓库编号
	private String sbuyermembername;//买方会员名称
	private String sbuyersmemberno;//买方会员编号
	private String sbuyersmemberwarehouseno;//买方仓库会员编号
	private int ioutreasontype;//提货单类型
	private Date dorderdate;//开单日期
	private Date dvaliddate;//有效期
	private String scardtype;//证件类型
	private String smobile;//提货手机
	private String scarno;//车牌号
	private int bisstamp;//是否要印章
	private String sremark1;//备注
	private String sremark2;  //备注2
}

public class TDeliveryDo {
	private String sbillno;
	
	List<TIndentureItem> list=new ArrayList<TIndentureItem>();

	

	/**
	 * @return the list
	 */
	public List<TIndentureItem> getList() {
		return list;
	}

	/**
	 * @param list the list to set
	 */
	public void setList(List<TIndentureItem> list) {
		this.list = list;
	}

	/**
	 * @return the sbillno
	 */
	public String getSbillno() {
		return sbillno;
	}

	/**
	 * @param sbillno the sbillno to set
	 */
	public void setSbillno(String sbillno) {
		this.sbillno = sbillno;
	}

}

public class TIndentureItem {
			private String smemberno;//会员编号
			private String scustomerno;//会员在仓库的编号 
			private String sstockno;//入库单号
			private String scardno;//卡号
			private String svariety;//品种
			private String scommodityname;//品名
			private String sspec;//规格
			private String smaterial;//材质
			private String sproducer;//厂家
			private String sstandard;//执行标准
			private String sdonkey;//炉批号
			private String slocation;//库位
			private String smeasurement;//计量方式
			private String sunit;	//件数单位
			private Date dindate;		   //入库日期
			
			private int iinpackage;//入库重量
			private double finweight;//入库件数
			
			private int ioutpackage;//出库重量
			private double foutweight;//出库件数
			
			private int   ipackage;//当前件数余额
			private double fweight;//当前重量余额
			
			private double flockweight;//锁定重量余额
			private int   ilockpackage;//锁定件数 余额

			private int   ialertpackage;//变动件数
			private double falertweight;//变动重量
			
			private double falertlockweight;//锁定变动重量
			private int ialertlockpackage;//锁定变动重量
			
			
			/*
			 * 	
		public final static int LOCK=0;//冻结
		public final static int UNLOCK=1;//解冻
		public final static int NONE=10;//不修改量
			 */
			private int ilocktype;//锁定类型
}

上面的代码中都省略了getter 和setter。

上面是一个及其复杂的,潜逃多层的数据绑定。

在jsp中,最外层的

EW010012Bean 
不用写,接着从里面的属性开始写起,list使用数据下标。 自己认真看下就能理解了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值