zoukankan      html  css  js  c++  java
  • hibernate_validator_02

    三种不通的注解

    1. 字段级(field level) 约束

    package com.mycompany;
    import javax.validation.constraints.NotNull;
    public class Car {
    @NotNull
    private String manufacturer;
    @AssertTrue
    private boolean isRegistered;
    public Car(String manufacturer, boolean isRegistered) {
    super();
    this.manufacturer = manufacturer;
    this.isRegistered = isRegistered;
    }
    }
    View Code

    当约束被定义在字段上的时候, 这个字段的值是通过字段访问策略来获取并验证的. 也就是说Bean Validation的实现者会直接访问这个实例变量而不会调用属性的访问器(getter) 即使这个方法存在.

    注意:这个字段的访问级别( private, protected 或者 public) 对此没有影响.

    注意:静态字段或者属性是不会被校验的.

    2.属性级别约束

    package com.mycompany;
    import javax.validation.constraints.AssertTrue;
    import javax.validation.constraints.NotNull;
    public class Car {
    private String manufacturer;
    private boolean isRegistered;
    public Car(String manufacturer, boolean isRegistered) {
    super();
    this.manufacturer = manufacturer;
    this.isRegistered = isRegistered;
    }
    @NotNull
    public String getManufacturer() {
    return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
    this.manufacturer = manufacturer;
    }
    @AssertTrue
    public boolean isRegistered() {
    return isRegistered;
    }
    public void setRegistered(boolean isRegistered) {
    this.isRegistered = isRegistered;
    }
    }
    View Code

    注意:如果要定义约束在属性级别上的话,那么只能定义在访问器(getter)上面,不能定义在修改器(setter)上.

    3.类级别约束

    package com.mycompany;
    import javax.validation.constraints.Min;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    @PassengerCount
    public class Car {
    @NotNull
    private String manufacturer;
    @NotNull
    @Size(min = 2, max = 14)
    private String licensePlate;
    @Min(2)
    private int seatCount;
    private List<Person> passengers;
    public Car(String manufacturer, String licencePlate, int seatCount) {
    this.manufacturer = manufacturer;
    this.licensePlate = licencePlate;
    this.seatCount = seatCount;
    }
    //getters and setters ...
    }
    View Code

    最后,一个约束也能够被放在类级别上,当一个约束被标注在一个类上的时候,这个类的实例对象被传递给ConstraintValidator.当需要同时校验多个属性来验证一个对象或者一个属性在验证的时候需要另外的属性的信息的时候,类级别的约束很有用.在上面的例子中,我们给类Car添加了一个passengers的属性,疽我们还标注了一个PassengerCout约束在类级别上,稍后会看到我们是如何创建这个自定义约束的.现在我们可以知道这个标注会保证这个车里乘客的数量不会超过它的座位数

  • 相关阅读:
    与人相处的二十四条黄金法则(转载)
    User.UserType: NoLogin 不是SQL Server 2005 的有效选项 的解决方案
    腾讯QQ的验证码,很黄很暴力
    具有Ajax自动建议功能的TextBox控件(附源码)
    30+英文电子书免费下载网站,跟喜欢看英文电子书的朋友分享
    Ajax实现多任务指示器(附源码)
    批量替换数据库记录内容的一条SQL语句
    MAC地址为FFFFFFFFFFFF,接受数据包为0,局域网电脑不能上网的解决办法
    不小了,该谈朋友结婚了,年前能实现吗?
    WordPress中J.parentNode’为空或不是对象的解决方法
  • 原文地址:https://www.cnblogs.com/wangyang108/p/5665046.html
Copyright © 2011-2022 走看看