我正在使用RESTful請求開發一個新的Spring MVC應用程序。應用程序執行標準數據庫加載對象,綁定值並保存。爲了不丟失窗體上不可用的對象值,我使用@ModelAttribute方法在綁定之前預先加載對象。Spring MVC @ModelAttribute與REST不兼容
當使用URL
/agency/418
我@ModelAttribute方法現在 '418' ID的學習方式加載機構。我的理解是,只有正規的請求的屬性可以被處理,所以我的網址將需要
/agency/418?id=418
這有點打破了RESTful模式。發佈數據時同樣的事情。
有人可能對此觀察發表評論...我錯過了什麼嗎?
感謝 西蒙
我的評論將是你正在嘗試使用ModelAttribute函數的東西,而不是它的意思。這並不意味着預先填充用於RESTful服務調用的對象,而是爲了簡化表單數據和控制器之間的綁定。這些數據會被POST'ed或GET'ed,在這種意義上你是正確的,你必須傳遞值才能做你正在嘗試的,但我認爲你的milage會有所不同。 – CodeChimp 2013-03-01 19:29:21
http://stackoverflow.com/questions/3672100/spring-mvc-3-0-how-do-i-bind-to-a-persistent-object建議使用表單對象進行綁定...我會看看那個。 – Simon 2013-03-05 09:54:57
有兩個地方可以放置ModelAttribute註釋。第一個是視圖處理器方法的參數。在這種情況下,用法是在表單和處理程序之間提供綁定。第二種方法是將它放在一個不帶參數的方法上,並返回目標ModelAttribute的新實例。這通常是一種私人方法。這樣做的目的是在處理程序定義不在Model或HttpSession中的ModelAttribute時創建默認版本。然後調用此方法來創建一個空的初始化實例,供視圖處理程序方法使用。 – CodeChimp 2013-03-05 14:14:10