복붙노트

[SPRING] Spring MVC를 사용하여 입력 텍스트의 날짜 형식 설정

SPRING

Spring MVC를 사용하여 입력 텍스트의 날짜 형식 설정

Spring MVC를 사용하여 텍스트 필드에서 날짜 형식을 어떻게 설정할 수 있습니까?

스프링 양식 태그 라이브러리와 입력 태그를 사용하고 있습니다.

내가 지금 얻는 것은 May 5 월 28 일 11시 9 분 28 초 CEST 2012와 같습니다.

날짜를 dd / MM / yyyy 형식으로 표시하고 싶습니다.

해결법

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

    1.yr 컨트롤러에 날짜 편집기 등록 :

    yr 컨트롤러에 날짜 편집기 등록 :

    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(LocalDate.class, new LocalDateEditor());
    }
    

    그런 다음 데이터 편집기 자체는 다음과 같이 보일 수 있습니다.

    public class LocalDateEditor extends PropertyEditorSupport{
    
     @Override
     public void setAsText(String text) throws IllegalArgumentException{
       setValue(Joda.getLocalDateFromddMMMyyyy(text));
     }
    
     @Override
     public String getAsText() throws IllegalArgumentException {
       return Joda.getStringFromLocalDate((LocalDate) getValue());
     }
    }
    

    실제로 Joda Datetime 라이브러리의 LocalDates (표준 Java 날짜 / 달력으로 권장)는 가신 (imho)입니다. 그러나 당신은 아이디어를 얻어야합니다. 또한 전역 편집기를 등록 할 수 있으므로 각 컨트롤러를 사용할 필요가 없습니다 (필자는 기억하지 못합니다).

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

    2.끝난! 방금 컨트롤러 클래스에이 메서드를 추가했습니다.

    끝난! 방금 컨트롤러 클래스에이 메서드를 추가했습니다.

    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        binder.registerCustomEditor(Date.class, new CustomDateEditor(
                dateFormat, false));
    }
    
  3. ==============================

    3.모든 컨트롤러에서 동일한 코드를 반복하지 않고도 모든 날짜의 서식을 지정하려는 경우 @ControllerAdvice 주석으로 주석 된 클래스에서 전역 InitBinder를 만들 수 있습니다.

    모든 컨트롤러에서 동일한 코드를 반복하지 않고도 모든 날짜의 서식을 지정하려는 경우 @ControllerAdvice 주석으로 주석 된 클래스에서 전역 InitBinder를 만들 수 있습니다.

    1. 다음과 같이 날짜 형식을 지정할 DateEditor 클래스를 만듭니다.

        public class DateEditor extends PropertyEditorSupport {
    
        public void setAsText(String value) {
          try {
            setValue(new SimpleDateFormat("dd/MM/yyyy").parse(value));
          } catch(ParseException e) {
            setValue(null);
          }
        }
    
        public String getAsText() {
          String s = "";
          if (getValue() != null) {
             s = new SimpleDateFormat("dd/MM/yyyy").format((Date) getValue());
          }
          return s;
        }
    

    2. @ControllerAdvice로 주석 된 클래스를 만듭니다 (GlobalBindingInitializer라고 함).

        @ControllerAdvice
        public class GlobalBindingInitializer {
    
         /* Initialize a global InitBinder for dates instead of cloning its code in every Controller */
    
          @InitBinder
          public void binder(WebDataBinder binder) {
            binder.registerCustomEditor(Date.class, new DateEditor());
          }
        }
    

    3. Spring MVC 설정 파일 (예 : webmvc-config.xml)에서 Spring이 GlobalBindingInitializer 클래스를 생성 한 패키지를 검사 할 수있게 해주는 라인을 추가한다. 예를 들어 org.example.common 패키지에 GlobalBindingInitializer를 만든 경우 :

        <context:component-scan base-package="org.example.common" />
    

    끝마친!

    출처 :

  4. from https://stackoverflow.com/questions/10785107/set-date-format-for-an-input-text-using-spring-mvc by cc-by-sa and MIT license