hibernate validation內建註解及自訂註解

來源:互聯網
上載者:User

標籤:errors   sse   實現   which   name   time   als   log   ror   

 1 Bean Validation 中內建的 constraint          2 @Null   被注釋的元素必須為 null     3 @NotNull    被注釋的元素必須不為 null     4 @AssertTrue     被注釋的元素必須為 true     5 @AssertFalse    被注釋的元素必須為 false     6 @Min(value)     被注釋的元素必須是一個數字,其值必須大於等於指定的最小值     7 @Max(value)     被注釋的元素必須是一個數字,其值必須小於等於指定的最大值     8 @DecimalMin(value)  被注釋的元素必須是一個數字,其值必須大於等於指定的最小值     9 @DecimalMax(value)  被注釋的元素必須是一個數字,其值必須小於等於指定的最大值    10 @Size(max=, min=)   被注釋的元素的大小必須在指定的範圍內    11 @Digits (integer, fraction)     被注釋的元素必須是一個數字,其值必須在可接受的範圍內    12 @Past   被注釋的元素必須是一個過去的日期    13 @Future     被注釋的元素必須是一個將來的日期    14 @Pattern(regex=,flag=)  被注釋的元素必須符合指定的Regex    15     16 Hibernate Validator 附加的 constraint    17 @NotBlank(message =)   驗證字串非null,且長度必須大於0    18 @Email  被注釋的元素必須是電子郵箱地址    19 @Length(min=,max=)  被注釋的字串的大小必須在指定的範圍內    20 @NotEmpty   被注釋的字串的必須非空    21 @Range(min=,max=,message=)  被注釋的元素必須在合適的範圍內

自訂註解:

Employee.java package org.lxl.spring.form.model; public class Employee {private int id;private String name;private String role;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getRole() {return role;}public void setRole(String role) {this.role = role;} } Employee是一個標準的java bean,我們使用Validate介面的實作類別來驗證這個類。 自訂驗證實現 Phone.javapackage org.lxl.spring.form.validator;import java.lang.annotation.Documented;import java.lang.annotation.Retention;import java.lang.annotation.Target;import java.lang.annotation.ElementType;import java.lang.annotation.RetentionPolicy; import javax.validation.Constraint;import javax.validation.Payload;@Documented@Constraint(validatedBy = PhoneValidator.class)@Target({ElementType.METHOD,ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface Phone {String message() default "{Phone}";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};} 大多數的部分是樣板式代碼與jsr - 303規範確認。最重要的部分是@Constraint注釋,我們提供的類即PhoneValidator將用於驗證。PhoneValidator.javapackage org.lxl.spring.form.validator; import javax.validation.ConstraintValidator;import javax.validation.ConstraintValidatorContext; public class PhoneValidator implements ConstraintValidator<Phone,String> { @Overridepublic void initialize(Phone paramA) {} @Overridepublic boolean isValid(String phoneNo, ConstraintValidatorContext ctx) {if(phoneNo == null){return false;}//validate phone numbers of format "1234567890"if(phoneNo.matches("\\d{10}")) return true;//validate phone number with -, . or spaceselse if(phoneNo.matches("\\d{3}[-\\.\\s]\\d{3}[-\\.\\s]\\d{4}}")) return true;//validating phone number with extension length from 3 to 5else if(phoneNo.matches("\\d{3}-\\d{3}-\\d{4}\\s(x|(ext))\\d{3,5}")) return true;//validating phone number where area code is in braces()else if(phoneNo.matches("\\(\\d{3}\\)-\\d{3}-\\d{4}")) return true;//return false if nothing matches the inputelse return false;}}我們應該實現javax.validation.ConstraintValidatorinterface jsr - 303規範驗證器實現。如果我們使用資料來源等一些資源,我們可以在initialize()方法初始化它們。驗證方法是isValid和其他它返回true,如果資料是有效它應該返回false。 EmployeeFormValidator.javapackage org.lxl.spring.form.validator; import org.springframework.validation.Errors;import org.springframework.validation.ValidationUtils;import org.springframework.validation.Validator; import org.lxl.spring.form.model.Employee; public class EmployeeFormValidator implements Validator{//which objects can be validated by this validator@Overridepublic boolean supports(Class<?> paramClass) {return Employee.class.equals(paramClass);} @Overridepublic void validate(Object obj, Errors errors) {ValidationUtils.rejectIfEmptyOrWhitespace(errors, "id", "id.required");Employee emp = (Employee) obj;if(emp.getId() <=0){errors.rejectValue("id", "negativeValue",new Object[]{"‘id‘"},"id can‘t be negative");}ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "name.required");ValidationUtils.rejectIfEmptyOrWhitespace(errors, "role", "role.required");}}EmployeeFormValidator是自訂驗證實作類別。support()方法是validator介面中規定的方法,告訴Spring架構,哪個類能使用這個驗證。 

 

hibernate validation內建註解及自訂註解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.