SpringMVC에서 JSR-303을 사용하여 @Valid 예제 확인

4173 단어 springmvcValid
메모 작업
1. 검증 준비 시 사용되는 JAR
validation-api-1.0.0.GA.jar: JDK 인터페이스;
hibernate-validator-4.2.0.Final.jar는 상술한 인터페이스에 대한 실현이다.
log4j、slf4j、slf4j-log4j
2. 검증이 필요한 bean 작성

@NotNull(message=" ")
private String userName;
@Max(value=120,message=" 120")
private int age;
@Email(message=" ")
private String email;
3. 검사 방법

@RequestMapping("/login")
 public String testValid(@Valid User user, BindingResult result){
  if (result.hasErrors()){
   List<ObjectError> errorList = result.getAllErrors();
   for(ObjectError error : errorList){
    System.out.println(error.getDefaultMessage());
   }
  }
   
  return "test";
 }
비고: 여기 @Valid 매개 변수가 있으면 BindingResult 매개 변수에 바짝 붙어 있어야 합니다. 그렇지 않으면spring이 검사를 통과하지 못할 때 바로 이상을 던집니다.
프론트 데스크톱에서spring의 탭 라이브러리를 사용할 수도 있고 사용자 정의 처리를 할 수도 있습니다
spring 태그 라이브러리 사용법:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
 
<html> 
<head> 
<title>Reservation Form</title> 
<style> 
.error { 
 color: #ff0000; 
 font-weight: bold; 
} 
</style> 
</head> 
 
<body> 
 <form:form method="post" modelAttribute="vm"> 
  <form:errors path="*" cssClass="error" /> 
  <table> 
   <tr> 
    <td>Name</td> 
    <td><form:input path="userName" /> 
    </td> 
    <td><form:errors path="userName" cssClass="error" /> 
    </td> 
   </tr> 
   <tr> 
    <td>email</td> 
    <td><form:input path="email" /> 
    </td> 
    <td><form:errors path="email" cssClass="error" /> 
    </td> 
   </tr> 
  
   <tr> 
    <td colspan="3"><input type="submit" /> 
    </td> 
   </tr> 
  </table> 
 </form:form> 
</body> 
</html> 

4. 스프링을 켜는 Valid 기능

<mvc:annotation-driven />
5. JSR303이 정의한 검증 유형
빈 검사
@Null 객체가 null인지 확인
@NotNull 인증 객체가 null이 아닌지 확인할 수 없습니다. 길이가 0인 문자열은 확인할 수 없습니다.
@NotBlank 는 제약 문자열이 Null인지 그리고 Trim 길이가 0보다 큰지 확인하고, 문자열만 검사하며, 앞뒤 공백을 제거합니다.
@Notempty 제약 요소가 NULL 또는 EMPTY인지 확인합니다.
부엘란 검사
@AssertTrue Boolean 객체가true 인지 확인
@AssertFalse Boolean 객체가 false인지 확인
길이 검사
@Size(min=, max=) 객체(Array, Collection, Map, String) 길이가 지정된 범위 내에 있는지 확인합니다.
@Length(min=, max=) Validates that the annotated string is between min and max included.
날짜 검사
@Past 현재 시간 이전에 Date 및 Calendar 객체가 있는지 확인
@Future 현재 시간 이후에 Date 및 Calendar 객체가 있는지 확인
@Pattern String 객체가 정규 표현식의 규칙에 부합하는지 확인
수치 검사, Stirng, Integer 형식에 사용하는 것을 권장합니다. int 형식에 사용하는 것을 권장하지 않습니다. 폼 값이 ""일 때 int로 변환할 수 없지만 Stirng은 "", Integer는 null로 변환할 수 있습니다.
@Min 은 Number 및 String 객체가 지정된 값과 큰지 확인합니다.
@Max 는 Number 및 String 객체가 지정된 값보다 작은지 확인합니다.
@DecimalMax 치수의 값은 구속에서 지정한 최대치보다 크지 않아야 합니다.이 구속조건의 매개변수는 BigDecimal을 통해 정의된 최대 값을 나타내는 문자열입니다.소수 존재 정밀도
@DecimalMin 치수의 값은 구속에서 지정한 최소값보다 작지 않아야 합니다.이 구속조건의 매개변수는 BigDecimal을 통해 정의된 최소 값의 문자열 표현입니다.소수 존재 정밀도
@Digits에서 Number 및 String 구성이 적합한지 확인
@Digits(integer=,fraction=) 문자열이 지정한 형식에 맞는 숫자인지 확인하고,interger는 정수 정밀도를 지정하고,fraction는 소수 정밀도를 지정합니다.
@Range(min=, max=) 숫자가 min과 max 사이인지 확인합니다.
@Range(min=10000,max=50000,message="range.bean.wage")
private BigDecimal wage;
@Valid 는 연관된 객체를 검사합니다. 연관된 객체가 집합 또는 그룹이면 요소에 대해 검사하고 맵이면 값 부분을 검사합니다.(반복 검증 여부)
@CreditCardNumber 신용카드 인증
@Email 인증이 메일 주소인지 확인합니다. null이면 인증하지 않고 인증을 통과합니다.
@ScriptAssert(lang= ,script=, alias=)
@URL(protocol=,host=, port=,regexp=, flags=)
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기