[SPRING] Spring MVC를 사용하여 입력 텍스트의 날짜 형식 설정
SPRINGSpring MVC를 사용하여 입력 텍스트의 날짜 형식 설정
Spring MVC를 사용하여 텍스트 필드에서 날짜 형식을 어떻게 설정할 수 있습니까?
스프링 양식 태그 라이브러리와 입력 태그를 사용하고 있습니다.
내가 지금 얻는 것은 May 5 월 28 일 11시 9 분 28 초 CEST 2012와 같습니다.
날짜를 dd / MM / yyyy 형식으로 표시하고 싶습니다.
해결법
-
==============================
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.끝난! 방금 컨트롤러 클래스에이 메서드를 추가했습니다.
끝난! 방금 컨트롤러 클래스에이 메서드를 추가했습니다.
@InitBinder protected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); binder.registerCustomEditor(Date.class, new CustomDateEditor( dateFormat, false)); }
-
==============================
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" />
끝마친!
출처 :
from https://stackoverflow.com/questions/10785107/set-date-format-for-an-input-text-using-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC 폼 - 백킹 객체 트리 초기화를위한 베스트 프랙티스 (0) | 2019.02.06 |
---|---|
[SPRING] 봄 + 각도 동일한 파일을 두 번 업로드 할 수 없습니다. (0) | 2019.02.06 |
[SPRING] IllegalArgumentException : 형태를 null로 할 수 없다 (0) | 2019.02.06 |
[SPRING] 스프링 빈에서 세션 범위 사용하기 (0) | 2019.02.05 |
[SPRING] 스프링 3의 DispatcherServlet 대신 ContextLoaderListener를 통한 DefaultAnnotationHandlerMapping (0) | 2019.02.05 |