我想根据场合验证对象的不同属性。举个例子,假设我有一个User对象
public class User{
private String username;
private String password;
private String age;
}
添加用户时,我想验证所有字段。但是当用户重置密码时,会有用户名和密码。如果Spring验证器也尝试验证年龄,那将是一个失败。
有没有办法告诉Spring验证器只验证对象属性的某个子集。
答案 0 :(得分:1)
要部分更新实体,您应该使用@SessionAttributes将模型存储在请求之间的会话中。您可以使用隐藏的表单字段,但会话更安全。
要保护字段,请使用webDataBinder.setAllowedFields(" field1"," field2",...)或创建特定于表单的类,然后将值复制到您的实体
使用验证组+ @Validated。虽然在这种情况下,使用单独的Form Backing Objects可能更容易。
请在此处查看我的回答:Spring MVC: Validation, Post-Redirect-Get, Partial Updates, Optimistic Concurrency, Field Security