【问题标题】:Validate part of object Spring [duplicate]验证对象Spring的一部分[重复]
【发布时间】:2015-09-30 00:31:37
【问题描述】:

我想根据场合验证对象的不同属性。例如,假设我有一个用户对象

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

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

有没有一种方法可以告诉 Spring 验证器只验证对象属性的某个子集。

【问题讨论】:

  • 您可以使用 JSR-303 验证注解结合 Spring 的 Validated 注解,它允许您指定验证组。

标签: validation spring-mvc


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

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

  3. 使用验证组 + @Validated。尽管在这种情况下,使用单独的表单支持对象可能更容易。

在这里查看我的答案:Spring MVC: Validation, Post-Redirect-Get, Partial Updates, Optimistic Concurrency, Field Security

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2018-05-20
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    相关资源
    最近更新 更多