我是Spring的新手,之前我曾在PHP和Python工作過。我在理解Spring表單如何工作和驗證方面存在一些問題。到目前爲止,我的理解是,當您使用表單時,您的表單由一個bean支持,這意味着您必須向JSP提供一個bean。您也可以使用站點HTML表單,但您必須手動檢索控制器中的請求參數。Spring Forms和Validation的問題
這裏是我遇到的問題。我有一個使用Hibernate Validator的User bean,並且爲用戶添加,編輯頁面。問題是我不希望密碼字段出現在編輯頁面上,密碼因爲使用了BCrypt而會變成垃圾。但是,當提交表單時,驗證失敗,因爲它期望密碼存在。反正用Spring Form做部分bean實現似乎沒有。
我想如果可能的話,因爲它減少了重複的驗證代碼使用Spring的形式,和它總是很高興與對象一起工作。我現在的想法是創建一箇中間對象,然後將數據從該對象轉換爲我的bean。看起來很乏味,可以導致創建許多對象的方式。我的另一個想法是隻使用簡單的舊HTML表單並自己拉參數並在對象中設置值。
我不知道什麼是最好的辦法,或者如果我甚至在正確的軌道上的思考。 Spring Forms和驗證提供看起來很棒,但似乎不是特別靈活。就像我說的,我是Spring的新手,所以我可能會錯過某些東西或不理解。
另一個問題,我一直在摔跤是有需要的形式在多個對象。比方說,我有一個用戶bean,它具有以下屬性。
私人角色角色; 私人國家國家;
所以我需要通過用戶,列表和列表我的JSP。我可以讓它們顯示正常,但是如果表單驗證在返回到該頁面時失敗,則我將失去我的角色和國家/地區對象,除非在返回視圖名稱之前將它們重新添加到模型中。我在這裏錯過了什麼或者是規範嗎?這是一個請求對象,所以我認爲這是有道理的,但每次都必須重新添加它們似乎很繁瑣。
哇,很好的回答,謝謝你的解釋。這有助於我指出正確的方向。我會研究DTO概念。再次感謝您抽出寶貴的時間來解答您的問題! – greyfox