最近在使用springMVC的时候,产生了这样一个问题。
一个Hibernate的Entity,命名为Department.
Department 内有一个父节点变量 命名为 depParent;
因为是一个外键设置,所以depParent不能在声明时 却 new ,也不能在get 的时候去new
所以我在一个JSP页面提交一个这样的form时
<form id="addForm" action="addDepartment.htm" method="post" onsubmit="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,就用一个新的变量来做一个中转吧。
这是我自己学习找到的一些经验,如有什么不足,多指教。
分享到:
相关推荐
以上是springmvc+spring+hibernate整合基于eclipse,oracle开发
Spring+SpringMVC+Hibernate+maven项目,适用初学者学习。
Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA
基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+...
系统采用技术:Spring+SpringMVC+Hibernate+jQuery+Ajax+面向接口编程。 简介:该图书管理项目实现了三种角色的功能,分别是超级管理员,图书管理员和读者。在系统中,实现了图书管理,统计管理,系统管理和系统监控...
很全面的jar包,可以直接用于springmvc+hibernate项目开发。
Spring+SpringMVC+Hibernate+JSP操作数据
spring+springMVC+Hibernate整合
springMVC+maven+hibernate框架,搭建的过程 可以参考 java进阶(五)------springMVC---springMVC+Hibernate+maven完整搭建运行步骤 http://blog.csdn.net/zzq900503/article/details/49892783
springmvc+hibernate+oracle基础框架,项目源码和数据库脚本(dmp、sql),添加myeclipse中可以直接使用
Spring+SpringMVC+Hibernate+Maven框架搭建及配置文件源码
一个用springmvc+hibernate+spring maven实现的增、删、改、查的例子
springmvc+hibernate+easyui实现了菜单动态显示和数据列表动态显示
是我自己做的springMVC+hibernate的环境,包括连接数据库查询,基于注解的方式
spring+springmvc+hibernate+jpa环境搭建
SpringMVC+Hibernate+annotation+Easyui权限管理系统,Session过期控制(包括Ajax请求的过期控制),访问权限控制(权限控制到按钮),hibernate数据库用户名与密码加密,其它的不说了,绝对物有所值
spring+springmvc+hibernate+ thymeleaf 框架组合练习学习做的一个完整的精简的小demo项目源码
springMVC+hibernate开发项目用到的jar包,相对比较完善了。
springMVC+hibernate+maven的整合例子
与我的博客理解Spring+SpringMVC+Hibernate开发流程,附一定源码(一)配套的用于理解Spring+SpringMVC+Hibernate开发的一个简单的小例子。