2012-03-07 5 views
8

Spring MVC (@Validate)에서 배킹 개체 및 주석이있는 유효성 검사기를 사용했습니다. 잘 돌아갔다.Spring MVC 컨텍스트 외부에서 Spring Validator 사용하기

이제 스프링 매뉴얼과 함께 내 자신의 유효성 검사를 구현하는 방법을 정확하게 이해하려고합니다. 내 유효성 검사기를 "사용하는"방법에 대해서는 확실하지 않습니다.

내 검사기 :

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가 없기 때문에 유효하지 않습니다.

답변

19

스프링이 제공하는 구현을 사용하지 않는 이유는 무엇입니까 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); 

.

행운을 빕니다

+3

이것은 마치 매력적이었습니다! 문서의 유효성 검사 개념이 처음 나타날 때 어떻게 작동하는지 보여줄 수 있기를 바랍니다 ... – Harry

+4

두 번째 인수 인 Shape.class.getName()이 필요한 이유를 말씀해 주시겠습니까? –

관련 문제