验证对象Spring的一部分

时间:2015-07-11 07:31:46

标签: validation spring-mvc

我想根据场合验证对象的不同属性。举个例子,假设我有一个User对象

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

添加用户时,我想验证所有字段。但是当用户重置密码时,会有用户名和密码。如果Spring验证器也尝试验证年龄,那将是一个失败。

有没有办法告诉Spring验证器只验证对象属性的某个子集。

1 个答案:

答案 0 :(得分:1)

  1. 要部分更新实体,您应该使用@SessionAttributes将模型存储在请求之间的会话中。您可以使用隐藏的表单字段,但会话更安全。

  2. 要保护字段,请使用webDataBinder.setAllowedFields(" field1"," field2",...)或创建特定于表单的类,然后将值复制到您的实体

  3. 使用验证组+ @Validated。虽然在这种情况下,使用单独的Form Backing Objects可能更容易。

  4. 请在此处查看我的回答:Spring MVC: Validation, Post-Redirect-Get, Partial Updates, Optimistic Concurrency, Field Security