[問題] Spring的RequestBody

看板java作者 (資工人)時間7年前 (2016/08/30 00:46), 7年前編輯推噓4(4010)
留言14則, 3人參與, 最新討論串1/2 (看更多)
大家好,扣除回文之外,這是我第一次在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的資訊 想在此請問各位前輩們,感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.178.168 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1472489186.A.256.html

08/30 00:56, , 1F
Spring幫你做data binding的時候可以一起做驗證
08/30 00:56, 1F

08/30 00:58, , 3F
http://goo.gl/z3Xjr1 看看這些吧
08/30 00:58, 3F
感謝!這兩天連同Spring MVC一起來研究看看

08/30 13:00, , 4F
JSF2: 我也很好用阿QQ
08/30 13:00, 4F
之後有機會來看看 謝謝推薦!

08/30 13:14, , 5F
題外話,為何我用spring 4.0加Hibernate在作資料insert都會
08/30 13:14, 5F

08/30 13:14, , 6F
出現no session found 的錯誤
08/30 13:14, 6F

08/30 14:10, , 7F
樓上你這個應該是Hibernate session沒有綁到當前scope
08/30 14:10, 7F

08/30 14:10, , 8F
你要看一下你的交易控制的AOP設定
08/30 14:10, 8F
※ 編輯: kyleJ (220.132.178.168), 08/30/2016 21:42:49

09/02 01:17, , 9F
感謝haha,我重new一個project,發現在application.xml內要
09/02 01:17, 9F

09/02 01:17, , 10F
加transcation manager,然後那個好像早期版本沒那麼嚴,現在
09/02 01:17, 10F

09/02 01:17, , 11F
連線資訊好像要另外寫然後放到web-inf內然後在設定property
09/02 01:17, 11F

09/02 01:17, , 12F
Configuter
09/02 01:17, 12F

09/02 01:17, , 13F
sessionfactory要定義datasourse
09/02 01:17, 13F

09/02 01:17, , 14F
有點顛覆過去的做法,感謝你
09/02 01:17, 14F
文章代碼(AID): #1Nn6RY9M (java)
文章代碼(AID): #1Nn6RY9M (java)