Spring的窗體控制器(如SimpleFormController
或BaseCommandController
)使用命令在HTML窗體和控制器之間傳遞數據。我的問題是,將支持模型用作命令本身是否常見?或者,通常使用與支持模型中的屬性相對應的屬性創建單獨的命令。Spring窗體命令的含義
我的問題是,使用支持模型作爲命令,屬性編輯器是必要的轉換非字符串屬性。設想一個包含許多非字符串強類型自定義字段類型的數據模型。在表單提交時,屬性編輯器在調用驗證器之前執行轉換。如果類型轉換不可能(用戶輸入錯誤),則驗證程序永遠不會有機會提供詳細的錯誤消息。 HTML表單上顯示的所有內容都是一般性錯誤消息。看我的related Stackoverflow question。
另一種方法是創建一個單獨的命令,它將備份模型中的每個字段作爲字符串進行復制。通過這種方式驗證器可以驗證每個字段的字符串表示形式。控制器的onSubmit
然後負責將基於文本的命令轉換爲支持模型。從我對春季的研究中,這似乎是預期的用法。我沿着這條路走下去的猶豫是繁瑣的方式,需要爲每個數據模型創建一個單獨的命令。然後,需要在命令和數據模型之間進行編組的額外工作。讓表單直接編輯支持模型並使用屬性編輯器進行轉換更方便。那麼問題就是驗證。
所以我很好奇他人如何解決包含自定義類型非字符串字段的模型的基於表單的編輯問題。