[问题] Spring的RequestBody

楼主: kyleJ (资工人)   2016-08-30 00:46:23
大家好,扣除回文之外,这是我第一次在PTT上发文
若有不恰当的地方还请多多指教,谢谢
之前我用Java都是Java SE的部分比较多
主要做网页爬虫,连接档案系统或DB储存与分析资料
也有写Swing或JavaFX做GUI给User
但Java EE的部分就没什么接触了
以前为了一个国科会案子有自己土法写JSP/Servlet
有维护过AXIS2产生的WebService的Server code
除此之外好像没什碰到Java EE的东西
后来我写网页服务应用都以PHP为主
再配合CodeIgniter的MVC框架才了解到MVC的好
所以最近要准备以Java写RESTful服务决定研究Spring+Hibernate
首先是Spring的部分照着spring.io的训练做真是吓人的好用
Hibernate的存在更是让我觉得之前浪费了很多生命写业务逻辑外的程式...
抱歉,前言好像多了点
在Spring上我使用RestController来写控制器
也用过RequestBody来让Client直接丢JSON变成Java物件使用
如一个新增User到数据库的服务:
@RequestMapping("/add")
public ResultBean addUser(@RequestBody User user){
// 先检查user不为null
// 再检查user里面所有field都不是null
// 再把user丢去hibernate储存
// 返回自订的Result物件让Sprint自动转为JSON
}
这边收到user第一件要做的事情检查是user不是nulll
第二件要检查是不是user的所有field都非null
update的服务也是如此,而其他物件的add、update也都必须要做
这是事先订好的,field可以是空字串,但不能是null
这部分我有写一个运用反射自动检查所有field的工具
丢任何物件进去都能检查有哪些field,以及是否全部都非null
但我好奇有没有方法让Spring自动检查RequestBody?
或是把Body转为物件后,先经过我写的程式检查再呼叫mapping的method?
若是Servlet我会override service method先检查
没问题后再让他转去doXXX方法执行
但对Sprint不熟不知道该怎么做
上网查询查到比较多Struts2的资讯
想在此请问各位前辈们,感谢!
作者: haha02 (来人!上夹棍!)   2016-08-30 00:56:00
Spring帮你做data binding的时候可以一起做验证https://spring.io/guides/gs/validating-form-input/http://goo.gl/z3Xjr1 看看这些吧
作者: gmoz ( This can't do that. )   2016-08-30 13:00:00
JSF2: 我也很好用阿QQ
作者: gpctv (gpctv)   2016-08-30 13:14:00
题外话,为何我用spring 4.0加Hibernate在作资料insert都会出现no session found 的错误
作者: haha02 (来人!上夹棍!)   2016-08-30 14:10:00
楼上你这个应该是Hibernate session没有绑到当前scope你要看一下你的交易控制的AOP设定
作者: gpctv (gpctv)   2016-09-02 01:17:00
感谢haha,我重new一个project,发现在application.xml内要加transcation manager,然后那个好像早期版本没那么严,现在连线资讯好像要另外写然后放到web-inf内然后在设定propertyConfigutersessionfactory要定义datasourse有点颠覆过去的做法,感谢你

Links booklink

Contact Us: admin [ a t ] ucptt.com