spring - 忽略选择性实体字段的 spring mvc JSR-303 验证

标签 spring spring-mvc spring-validator

我有 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;

  ........
}

我的表单仅包含 streetpin 作为字段,其中 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/

相关文章:

java - 如何重定向到 j_spring_security_check

java - 如何修复 org.springframework.beans.factory.BeanCreationException

java - 让Spring使用Jackson在GET端点中转换JSON编码的@RequestParam

java - 如何在 Spring Boot 中使用 Spring Validation 来验证嵌套对象?

java - 本金为空 : Spring

java - 如何在 weburl 中使用 REST API Controller 返回 xls excel 文件响应

java - Android Spring 集成

java - 如何将 Spring 集成到 Cucumber 中

spring - 如何处理持久化之前使用 Hibernate 验证的内部 @Entity 类的 Spring BindingResult 异常

java - Spring MVC 验证状态 400