2012-02-19 2 views
1

JSR303과 함께 Spring MVC를 사용하여 입력 유효성 검사를 수행하고 있습니다.Spring MVC JSR303의 날짜 형식 유효성 확인

작성한 양식에는 양식을 뒷받침하는 오브젝트 내의 Date 오브젝트에 바인드 된 두 개의 날짜 필드가 있습니다. 나는 을 사용하여 Date에 대한 유효성 검사를 수행하기 위해 JSR303을 사용하고 있습니다. 또한 @DateTimeFormat(pattern="dd/MM/yyyy")을 사용하고 있습니다. 유효성 검사가 아님을 알고 있습니다.

양식의 String의 날짜 형식을 어떻게 확인합니까? 다른 필수 입력란을 비워두고 'dd/MM/yy'형식으로 유효하지 않은 날짜를 입력하면 다시 표시 할 때 'dd/MM/yyyy'로 변환됩니다 (예 : 12/03/12 2012 년 12 월 3 일로 다시 발표됩니다.) 즉, 내 시스템에서 더프 데이터를 얻을 수 있음을 의미합니다. "aaa"라고 입력하면 변환 예외가 발생합니다. String 형식이 Date 개로 변환됩니다.

Date 필드의 '필수 필드'주석은 @NotNull 또는 @NotEmpty이어야합니까?

제공된 모든 조언에 대해 미리 감사드립니다.

답변

1

JSR303에서는 이미 poplulated (form baching) 객체에서 유효성 검사가 실행되므로이 ​​작업을 수행 할 수 없습니다.

그래서 사용자 정의 변환기를 구현해야합니다. 스프링을 탑재 한 변환기보다 조금 더 빡빡합니다.

@see Spring Reference: Chapter 6.5 Spring 3 Type Conversion

2

감사 랄프. 좀 더 주위를 파고했고, (내 폼 컨트롤러에가는 어떤)이 함께했다 : 모든 지원하기 위해 일부 좋은 침착 안심 메시지 :

typeMismatch.java.util.Date : 속성으로

@InitBinder 
    public void initBinder(WebDataBinder binder) { 


    String format = "dd/MM/yyyy"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat(format); 
    dateFormat.setLenient(false); 
    CustomDateEditor customDateEditor = new CustomDateEditor(dateFormat,true,format.length()); 

    binder.registerCustomEditor(Date.class, customDateEditor); 
    } 

는 다음과 같은 키를 가진 정보 파일 태만 한 사용자

아마도 다른 방법이있을 수 있지만 지금은 그렇게 할 것입니다.

+0

typeMismatch.java.util.Date의 메시지 키를 CommandObjectXYZ.dateXYZ와 같이 좀 더 구체적으로 변경할 수 있습니까? = 날짜가 유효하지 않습니다. – svlada