2015-06-26 56 views
0

我想知道是否可以通過構造函數注入來接收POST數據(無論是從系統還是Web表單)填充一個bean。我想知道這是不是一個比擁有大量setter的更好的主意,如果這可能有一些不好的副作用,我不知道。Spring MVC:通過構造函數填充form-b​​acking bean?

我目前在Spring中使用了一個支持form的bean,並且實現了大量的getters/setters,但主要是這個bean作爲一個數據strcuture,只持有和驗證注入的內容以便爲模板引擎提供數據。如果我可以通過構造函數注入所有的POST數據,我可以省略所有的設置器,但同時構造器可以處理很多參數。

那是一個明智的想法,或者是setter方法的注射的最佳實踐這裏^^」

+0

爲什麼不使用Validator來驗證數據? –

+0

我已經在使用驗證器。我的問題是,如果通過構造函數填充一個支持form的bean是明智的。 –

回答

0

的回答我的問題基本上是這樣[post]。雖然博客文章主要涉及不變對象的處理,這個概念是轉讓。

筆者利用自定義WebArgumentResolver的。基本上,你的手拿起到達後的數據,並調用你的bean的構造函數來填充它的領域。
此外,在註釋部分有提到佑的可以使用Spring DataBinder類,以及。關於binder.initDirectFieldAccess();的提示是一個很好的評論。

這樣就很容易瘦我的豆,所以它不再需要假裝是一個對象,雖然它是一個數據結構。

考慮到這似乎是一個完全可行的方式來利用不可變的對象,我的結論是它也可能符合我的目的。儘管我可能不會讓我的bean不可改變,但即使可以通過構造函數實現字段填充,也可以通過大量setter和getter來監視代碼,這並不是有利可圖的。

相關問題