2015-07-11 50 views
0

我想根據場合驗證對象的不同屬性。例如讓我說我有一個用戶對象確認對象的一部分Spring

public class User{ 
    private String username; 
    private String password; 
    private String age; 
} 

當添加用戶我想驗證所有字段。但是,當用戶重置密碼時,會有用戶名和密碼。如果Spring驗證器試圖驗證年齡,那麼這將會失敗。

有沒有一種方法可以告訴Spring驗證器只驗證對象屬性的某個子集。

+2

可以使用JSR-303的驗證註解與Spring的['Validated'(http://docs.spring.io/spring/docs/current/javadoc合併-api/org/springframework/validation/annotation/Validated.html)註釋,它允許您指定驗證組。 –

回答

1
  1. 要部分地更新實體,你應該使用@SessionAttributes到模型存儲在請求之間的會話。您可以使用隱藏的表單字段,但會話更安全。

  2. 要確保字段安全,請使用webDataBinder.setAllowedFields(「field1」,「field2」,...)或創建特定於表單的類,然後將值複製到您的實體。

  3. 使用驗證組+ @有效。儘管在這種情況下,使用單獨的表單備份對象可能會更容易。

見我的答案在這裏:Spring MVC: Validation, Post-Redirect-Get, Partial Updates, Optimistic Concurrency, Field Security