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

标签: spring mvc 复杂 | 发表时间:2013-10-16 01:36 | 作者:skmbw
出处:http://blog.csdn.net

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使用数据下标。 自己认真看下就能理解了。

作者:skmbw 发表于2013-10-15 17:36:05 原文链接
阅读:93 评论:0 查看评论

相关 [spring mvc 复杂] 推荐:

Spring MVC 和 Struts2

- - CSDN博客架构设计推荐文章
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比《 Struts1和Struts2》,这篇将对比下Struts2和SpringMVC的异同,下面数据基本来源于网络,本人是搜集整理所得,供大家参考. 一个项目使用什么样的技术,决定的因素很多,我所能想到的有:对系统的性能、开发的效率、团队学习的成本、业务场景等,下面尽量从这几个方面入手,来分析比较下他们之间存在的优劣.

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

- - CSDN博客Web前端推荐文章
spring mvc提供了和struts2差不多类似的数据绑定功能. 对应封装的javabean 如下:. private Date duptime;//单据上传时间. private String soperator;//操作人. private Date doperatetime;//操作时间.

Spring MVC 3 深入总结

- - 企业架构 - ITeye博客
大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了. Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. 官方的下载网址是: http://www.springsource.org/download   (本文使用是的Spring 3.0.5版本).

Spring MVC 与 web开发

- - 码蜂笔记
项目组用了 Spring MVC 进行开发,觉得对里面的使用方式不是很满意,就想,如果是我来搭建开发环境,我会怎么做. 下面就是我的想法,只关注于 MVC 的 View 层. 现在基本上都是用 ajax 来调用后台接口,拿到 json格式的数据再展示,有的人直接返回数据,却没有考虑异常的情况,我觉得返回的报文里必须包含表示可能的异常信息的数据和业务响应数据.

Spring MVC的常见错误

- - Java译站
10年前我开始自己的职业生涯的时候,Struts还是市场上的主流标准. 然而多年过后,我发现Spring MVC已经越来越流行了. 对我而言这并不意外,因为它能和Spring容器无缝集成,同时它还提供了灵活性及扩展性. 从我迄今为止对Spring的经验来看,我发现有不少人在配置Spring的时候经常会犯一些常见的错误.

spring mvc 异常处理(转)

- - 编程语言 - ITeye博客
链接:http://gaojiewyh.iteye.com/blog/1297746 (附源码). 链接:http://zywang.iteye.com/blog/983801 . 链接:http://www.cnblogs.com/xguo/p/3163519.html . 链接:http://fuliang.iteye.com/blog/947191 .

Spring MVC 入门实例

- - CSDN博客推荐文章
springmvc 框架围绕DispatcherServlet这个核心展开,DispatcherServlet是Spring MVC的总控制,它负责截获请求并将其分派给相应的处理器处理. SpringMVC框架包括注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理以及表单标签绑定等内容.

Spring MVC Controller单例陷阱

- - 企业架构 - ITeye博客
Spring MVC Controller单例陷阱. 标签:Spring mvc. 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明. Spring MVC Controller默认是单例的:. 1、这个不用废话了,单例不用每次都new,当然快了. 2、不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例.

Spring MVC 中 HandlerInterceptorAdapter的使用

- - 企业架构 - ITeye博客
一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理、后处理. Spring MVC的拦截器不仅可实现Filter的所有功能,还可以更精确的控制拦截精度. Spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现自己的拦截器.

Spring MVC防重复提交

- - 企业架构 - ITeye博客
如何在Spring MVC里面解决此问题(其它框架也一样,逻辑一样,思想一样,和具体框架没什么关系). 要解决重复提交,有很多办法,比如说在提交完成后redirect一下,也可以用本文提到的使用token的方法(我不使用redirect是因为那样解决不了ajax提交数据或者移动应用提交数据,另一个原因是现在比较通行的方法是使用token,像python里的django框架也是使用token来解决).