springMVC+hibernate 嵌套对象时产生的一个问题及解决方法

最近在使用springMVC的时候,产生了这样一个问题。

 

一个Hibernate的Entity,命名为Department.

 

Department 内有一个父节点变量 命名为 depParent;

 

因为是一个外键设置,所以depParent不能在声明时 却 new ,也不能在get 的时候去new

 

所以我在一个JSP页面提交一个这样的form时

 

<form id="addForm" action="addDepartment.htm" method="post" οnsubmit="return inputCheck();">
		<table>
			<tr>
				<td>*<spring:message code="departMent_name" />:</td>
				<td><input type="text" id="name" name="name"/></td>
			</tr>
			<tr>
				<td><spring:message code="departMent_beyond" />:</td>
				<td>
					<!-- <input id="parentDep.id" type="hidden" name="parentDep.id" /><input id="parentDep.name" type="text" name="parentDep.name"/> -->
					<input id="parentDep.id" type="text" name="parentDep.id"/>
				</td>
			</tr>
		</table>
	 <div><input type="submit"  value="<spring:message code="submit"/>" /></div>
	</form>

 这两个input都是有值的,然后我后台的controll用Department进行接收

 

 结果老是抛空指针异常。

 

用过struts2的都知道,这种写法是没有什么问题,可以直接进行类型的转换。

 

可是spring不行,我开始还以为是spring mvc不支持这种对象的嵌套的类型转换。

 

但是写propertyEditor也解决不了问题,

 

最后没办法只能跟踪源码,发现spring在做类型转换时,会用反射的方法取调用get方法,结果取出来是null,就会抛异常。

 

所以,最后的解决方案,只能再做一个暂态的变量来给spring进行转换。

 

到此,问题找了个折中的方式解决了。

 

不过从这点来看,spring的类型转换没有strust2的强大和智能,

 

所以如果想采用这种方式,对象类的嵌套对象,在get方法的时候必须能取到一个对象,而不是null。如果没办法new,就用一个新的变量来做一个中转吧。

 

这是我自己学习找到的一些经验,如有什么不足,多指教。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值