我有 spring4 mvc 应用程序来保存地址实体,代码位如下。
我的 Controller
@RequestMapping(value = "addAddress", method = POST)
public String registerComplaint(@Valid @ModelAttribute final Address address, final BindingResult resultBinder) {
if (resultBinder.hasErrors())
return "addAddress";
addressService.addAddress(address);
return "redirect:myAddress";
}
我的实体
@Entity
@Table(name = "address")
public class Address {
@NotNull
private String street;
@NotNull
private String pin;
@NotNull
private String createdBy;
........
}
我的表单仅包含 street 和 pin 作为字段,其中 createdBy 应由我在验证其他表单值后设置。
这里的问题是 spring JSR303 验证支持正在验证一个字段,即 createdBy,我不想通过 spring mvc 进行验证。
如何指示 spring mvc 在使用 @Valid 注释时不要验证这些类型的可选字段。
有什么方法可以使用 spring mvc 跳过这样的字段吗?
最佳答案
验证主要针对用户输入。由于您将自己设置 createdBy
,因此只需在保存之前执行此操作(例如 @PrePersist ),或者将新的日期作为默认值。如果您需要对 createBy 强制实现约束,可以在架构级别执行此操作。
@Column(nullable=false, ...)
private String createdBy = new Date();
关于spring - 忽略选择性实体字段的 spring mvc JSR-303 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431436/