返回介绍

7.4 Spring 的 Validator 范例

发布于 2025-04-22 20:10:00 字数 1918 浏览 0 评论 0 收藏

spring-validator 应用程序中包含一个名为 ProductValidator 的验证器,用于验证 Product 对象。Spring-validator 的 Product 类如清单 7.2 所示。ProductValidator 类如清单 7.3 所示。

清单 7.2 Product 类

package domain;
import java.io.Serializable;
import java.math,BigDecimal;
import java.time.LocalDate;

public class Product implements Serializable {
  private static final long serialVersionUID = 1L;
  private String name;
  private String description;
  private BigDecimal price;
  private LocalDate productionDate;

  //getters and setters methods not shown
}

清单 7.3 ProductValidator 类

package validator;
import java.math,BigDecimal;
import java.time.LocalDate;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import domain.Product;

public class ProductValidator implements Validator {
  @Override
  public boolean supports(Class<?> klass) {
    return Product.class.isAssignableFrom(klass);
  }

  @Override
  public void validate(Object target, Errors errors) {
    Product product = (Product) target;
    ValidationUtils.rejectIfEmpty(errors, "name",
        "productname.required");
    ValidationUtils.rejectIfEmpty(errors, "price","price.required");
    ValidationUtils.rejectIfEmpty(errors, "productionDate",
        "productiondate.required");
    BigDecimal price = product.getPrice();
    if (price != null && price.compareTo(BigDecimal.ZERO) < 0) {
      errors.rejectValue("price", "price.negative");
    }
    Local Date productionDate = product.getProductionDate();
    if (productionDate != null) {
      if (productionDate.isAfter(LocalDate.now())) {
        errors.rejectValue("productionDate",
            "productiondate.invalid");
      }
    }
  }
}

ProductValidator 验证器是一个非常简单的验证器。它的 validate 方法会检验 Product 是否有名称和价格,并且价格是否不为负数。它还会确保生产日期不晚于今天。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。