복붙노트

[SPRING] 스프링 MVC 폼 유효성 검사 날짜 필드

SPRING

스프링 MVC 폼 유효성 검사 날짜 필드

다음과 같이 Date 객체로 변환해야하는 양식 필드가 있습니다.

<form:input path="date" />

그리고 다음과 같은 방법으로 유효성 검사를 수행해야합니다.

문제는 1 차 또는 2 차 요구 사항을 충족 할 수 있다는 것입니다.

그런 문제에 대한 좋은 해결책이 있습니까?

해결법

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

    1.Spring MVC 유효성 검사기에서 Hibernate로 이동할 경우이를 수행 할 수있는 방법이있다. Hibernate 유효성 검사기가 Spring Validator 인터페이스와 잘 작동하기 때문에 큰 문제는 아니다 (또한 그룹을 지원하는 SmartValidator 인터페이스에 관심이있을 수있다).

    Spring MVC 유효성 검사기에서 Hibernate로 이동할 경우이를 수행 할 수있는 방법이있다. Hibernate 유효성 검사기가 Spring Validator 인터페이스와 잘 작동하기 때문에 큰 문제는 아니다 (또한 그룹을 지원하는 SmartValidator 인터페이스에 관심이있을 수있다).

    그 다음에 @NotNull 날짜 필드의 주석.

    속성 파일에서 NotNull. [formName]. [dateField] = 보낸 날짜가 없으면이 메시지가 표시됩니다. typeMismatch. [formName]. [dateField] =이 메시지는 스프링이 입력을 날짜 객체로 변환 할 수없는 경우 표시됩니다 (형식 유효성 검사 오류).

    형식 검사를 위해 CustomDateEditor를 사용할 수 있습니다.

    이 솔루션을 사용하면 지정한 각 경우에 예상되는 유효성 검사 오류 메시지가 표시됩니다.

  2. ==============================

    2.이런 문제에 직면 할 때 논리를 뒤집습니다. 빈 필드에 기본값을 설정하지 않지만 작업의 렌더링 부분에 기본값을 사용하여 필드를 미리로드합니다. 따라서 @DateTimeFormat (pattern = "dd-MMM-yyyy")로만 유효하게 유효합니다. 빈 필드는 사용자가 indently 오류 인 기본값을 제거했다고 가정하기 때문입니다.

    이런 문제에 직면 할 때 논리를 뒤집습니다. 빈 필드에 기본값을 설정하지 않지만 작업의 렌더링 부분에 기본값을 사용하여 필드를 미리로드합니다. 따라서 @DateTimeFormat (pattern = "dd-MMM-yyyy")로만 유효하게 유효합니다. 빈 필드는 사용자가 indently 오류 인 기본값을 제거했다고 가정하기 때문입니다.

    그래서 IMHO 당신은 그 양식에 대한 컨트롤러의 GET 부분에 기본값을 설정하고 간단한 @DateTimeFormat (pattern = "dd-MMM-yyyy") 주석을 고수해야합니다.

    날짜 필드가 들어있는 @ModelAttribute 주석 객체를 사용하는 응용 프로그램이 있습니다. 객체 클래스에서 Date 필드는 DateTimeFormat (pattern = "dd / MM / yyyy")과 함께 getter 및 setter에 주석으로 표시됩니다. 그리고 Spring (3.2.4)은 null로 설정 한 날짜 필드에 대해 빈 값을 허용합니다. 따라서 @DateTimeFormat (pattern = "dd-MMM-yyyy")을 사용해야하며 여전히 Null 값을 허용 할 수 있어야합니다.

  3. from https://stackoverflow.com/questions/24053139/spring-mvc-form-validation-date-field by cc-by-sa and MIT license