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约束在类级别上,稍后会看到我们是如何创建这个自定义约束的.现在我们可以知道这个标注会保证这个车里乘客的数量不会超过它的座位数

  • 相关阅读:
    SqlServer与Access之间的数据互导
    [转]半角<=>全角互转函数[JS版 VBS版]
    [文摘20070914]一个成功的博客必须知道的80个博客工具
    在javascript中获得由Ajax返回DataTable的列数和列名
    [转]获取xml节点值和属性值(兼容ie和firefox)
    [文摘20070920]网络战
    游标简单使用
    sql函数 得到 由 年月日时分秒+三位内的随机数 组成的随机数
    [转]ASP.NET 2.0 AJAX中Webservice调用方法示例 (包含参数类型为DataTable的WS方法)
    向页面中添加音乐或flash
  • 原文地址:https://www.cnblogs.com/wangyang108/p/5665046.html
Copyright © 2011-2022 走看看