Spring validator

3248 단어 SpringValidator
Spring vaidator 는 프로젝트 의 POJO 나 다른 검증 이 필요 한 곳 을 검증 하 는 인터페이스 Validator 를 제공 합 니 다.이 인 터 페 이 스 는 두 가지 방법 으로 나 뉜 다.
boolean supports(Class> clazz);제 공 된 클래스 에 대해 void validate (Object target, Errors errors) 를 검증 하 는 것 을 지원 하 는 지 여부;구체 적 으로 검 증 된 과정 과 규칙.
 
하나.Photo
 

package com.spring;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-9-6
 * Time:   10:01
 */
public class Photo {
    private String name;
    private String path;
    private String description;

    public Photo(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

 
둘.PhotoValidator Validator 인터페이스 구현
 

package com.dream.validator;

import com.dream.model.photo.Photo;
import org.springframework.validation.*;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-9-6
 * Time:   9:39
 */
public class PhotoValidator implements Validator {

    @Override
    public boolean supports(Class> clazz) {
        return Photo.class.equals(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        ValidationUtils.rejectIfEmpty(errors, "name", "Empty name of photo");
        Photo photo = (Photo) target;
        String name = photo.getName();
        if (name.length() > 10) {
            errors.rejectValue("name", "Too long of name's length");
        }
    }
}

 
셋.ValidatorTest
 

package com.spring;

import com.dream.model.photo.Photo;
import com.dream.validator.PhotoValidator;
import junit.framework.TestCase;
import org.springframework.validation.DirectFieldBindingResult;
import org.springframework.validation.Errors;
import org.springframework.validation.ObjectError;
import org.springframework.validation.Validator;

import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-9-6
 * Time:   9:38
 */
public class ValidatorTest extends TestCase {

    public void testValidator() throws Exception {
        Photo photo = new Photo("This is the name of a photo.");
        Validator validator = new PhotoValidator();
        Errors errors = new DirectFieldBindingResult(photo, "photo");
        boolean isSupport = validator.supports(Photo.class);
        validator.validate(photo, errors);
        List allErrors = errors.getAllErrors();
        assertTrue(isSupport);
        assertEquals(1, allErrors.size());
        assertEquals("Too long of name's length", allErrors.get(0).getCode());
    }
}

 
Spring 은 도구 류 ValidationUtils 를 제공 합 니 다. 주로 이런 몇 가지 방법 이 있 습 니 다. 1. invokeValidator: Validator 인증 을 실행 합 니 다.2. rejectIfEmpty: 빈 값 검증 을 실행 합 니 다.
3. rejectIfEmpty OrWhitespace: 빈 값 이나 빈 문자열 검증 을 실행 합 니 다.

좋은 웹페이지 즐겨찾기