`
Wind_ZhongGang
  • 浏览: 260398 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring validator

阅读更多

  Spring validator提供对项目中的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<ObjectError> 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.rejectIfEmptyOrWhitespace:执行空值或空白字符串验证。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics