`
pengjj2
  • 浏览: 140354 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

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

阅读更多

最近在使用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,就用一个新的变量来做一个中转吧。

 

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

 

 

分享到:
评论

相关推荐

    Java面试框架高频问题2019

    **问题十六:如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?** - 使用`@ModelAttribute`将请求参数自动绑定到Java对象。 **问题十七:SpringMvc中函数的返回值是什么?** - ...

    spring框架学习

    - **案例:测试IoC(set注入)**:通过set方法来注入依赖对象,例如,定义一个接口和其实现类,然后在配置文件中通过`&lt;bean&gt;`元素配置Bean并使用`property`子元素设置依赖对象。 - **案例:测试IoC(构造注入)**:...

    Java+SpringBoot+Vue应急知识学习系统答辩PPT.pptx

    8. SpringMVC开发:SpringMVC是Spring框架的一个模块,用于创建Web应用的MVC架构,其设计初衷是解决现有Web框架中层与层之间分离不清晰的问题。 9. 自然灾害应对:针对特定自然灾害,如洪水、地震、台风等,提高...

    框架面试笔试问答题.docx

    - **连接池管理器**负责创建一定数量的数据库连接并存储起来,当应用请求连接时,从池中获取一个空闲连接供应用使用;当应用使用完毕后,将连接归还到连接池中,而不是关闭连接。 - **工作原理**主要包括连接的创建...

    Mybatis教程整理.pdf

    1. 从配置文件(通常是XML)中加载配置信息,创建一个SessionFactory对象。 2. 通过SessionFactory对象产生Session对象。 3. 在Session对象的上下文中执行数据的增加、删除、更新和查询操作。 4. 完成操作后,事务...

    SSM框架面试题.pdf

    当一个类不再控制其依赖对象的创建过程时,这种控制权就被“反转”给了Spring容器。 3. **DI(依赖注入)与IOC的关系** - DI是实现IOC的一种手段。通过DI,可以在运行时将依赖注入到对象中,而不是在代码中硬编码...

    springboot癌症患者交流平台 PPT.pptx

    Spring框架最初并不是为了解决Web层的问题,但随着对现有Web框架的不足认识,它逐渐发展出了自己的Web层解决方案,即SpringMVC。Spring框架以其轻量级、模块化、对POJO(普通Java对象)的支持以及事务管理等功能,...

    MS知识点总结.txt

    - `Math.round()` 方法返回一个 `long` 或 `int` 类型的最接近参数的整数值。 - `Math.round(-1.5)` 返回 `-1`。 6. **String 是否属于基础数据类型** - `String` 不是基础数据类型,它是引用类型。 7. **操作...

    专高2_练习手册_高性能架构_第17单元1

    PROPAGATION_NESTED表示如果当前存在事务,则创建一个嵌套事务;若无事务,则新建一个。这与第四题的描述相符,所以答案是A,正确。 5. PROPAGATION_MANDATORY意味着如果当前存在事务,则加入该事务,否则抛出异常...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 ...

    java1000题基础百战程序员

    - 分支嵌套与循环嵌套 - **数组** - 数组的概念与用途 - 数组的声明与初始化 - 数组的操作:遍历、排序等 - **面向对象** - 面向对象的基本概念:封装、继承、多态 - 类与对象 - 构造方法与析构方法 - 继承...

    XiaoBan:xiaobao 论坛网站

    XiaoBan项目简介:这是一个在线论坛网站,实现了大...以及不方便页面的整体布局,为了使页面采用统一的风格,所以我在客户端发起请求时先返回一个包含多个空的jsp页面,再使用jQuery、ajax异步加载空白jsp中各个的内

Global site tag (gtag.js) - Google Analytics