복붙노트

[SPRING] Spring MVC 컨텍스트 외부에서 Spring Validator 사용

SPRING

Spring MVC 컨텍스트 외부에서 Spring Validator 사용

스프링 MVC (@Validate)에서 객체 및 주석을 뒷받침하는 유효성 검사기를 사용했습니다. 잘 돌아갔다.

이제는 Spring 매뉴얼에서 어떻게 작동하는지 정확히 이해하려고 노력하고 있습니다. 내 유효성 검사기를 "사용하는"방법에 대해서는 확실하지 않습니다.

내 유효성 검사기 :

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.myartifact.geometry.Shape;

public class ShapeValidator implements Validator {

@SuppressWarnings("rawtypes")
public boolean supports(Class clazz) {
    return Shape.class.equals(clazz);
}

public void validate(Object target, Errors errors) {
    ValidationUtils.rejectIfEmpty(errors, "x", "x.empty");
    ValidationUtils.rejectIfEmpty(errors, "y", "y.empty");
    Shape shape = (Shape) target;
    if (shape.getX() < 0) {
        errors.rejectValue("x", "negativevalue");
    } else if (shape.getY() < 0) {
        errors.rejectValue("y", "negativevalue");
    }
}
}

유효성 검사를 시도하는 Shape 클래스 :

public class Shape {

protected int x, y;

public Shape(int x, int y) {
    this.x = x;
    this.y = y;
}

public Shape() {}

public int getX() {
    return x;
}

public void setX(int x) {
    this.x = x;
}

public int getY() {
    return y;
}

public void setY(int y) {
    this.y = y;
}
}

주요 방법 :

public class ShapeTest {

public static void main(String[] args) {
    ShapeValidator sv = new ShapeValidator();
    Shape shape = new Shape();

    //How do I create an errors object? 
    sv.validate(shape, errors);
}
}

오류는 인터페이스 일 뿐이므로 일반 클래스처럼 실제로 인스턴스화 할 수 없습니다. 내 모양이 유효하거나 유효하지 않음을 확인하기 위해 유효성 검사기를 실제로 "어떻게"사용합니까?

참고로 x와 y가 없으므로이 모양은 유효하지 않습니다.

해결법

  1. ==============================

    1.Spring이 org.springframework.validation.MapBindingResult를 제공하는 구현체를 사용하지 않는 이유는 무엇입니까?

    Spring이 org.springframework.validation.MapBindingResult를 제공하는 구현체를 사용하지 않는 이유는 무엇입니까?

    넌 할 수있어:

    Map<String, String> map = new HashMap<String, String>();
    MapBindingResult errors = new MapBindingResult(map, Shape.class.getName());
    
    ShapeValidator sv = new ShapeValidator();
    Shape shape = new Shape();
    sv.validate(shape, errors);
    
    System.out.println(errors);
    

    그러면 오류 메시지에있는 모든 내용이 인쇄됩니다.

    행운을 빕니다

  2. from https://stackoverflow.com/questions/9607491/using-spring-validator-outside-of-the-context-of-spring-mvc by cc-by-sa and MIT license