프로그래밍
Spring에서 custom converter 만들어 사용하기
약올랑
2014. 2. 9. 15:36
스프링 @MVC를 사용하면
컨트롤러에 URL과 일치하는 함수를 구현해야 하는데,
URL에 파라미터가 존재할 때, 함수 파라미터를 지정하면 기본 타입(ENUM, INT, STRING, ...)인 경우 자동으로 바인딩 된다.
하지만 ENUM은 ENUM에 정의한 상수 이름과 일치해야 자동으로 바인딩 되는데, 상수 이름이 아닌 값으로도 바인딩 되도록 하고 싶었다.
자동 바인딩 되는 예)
enum{BASIC(0), GOLD(1)}
url?enum=BASIC
자동으로 되지 않는 예)
enum{BASIC(0), GOLD(1)}
url?enum=1
ENUM에 정의된 숫자값으로도 자동 바인딩될 수 있도록 사용자 정의 컨버터를 구현해야 한다.
구현 방법
Converter interface를 상속하여 사용자 정의 컨버터를 구현
사용자 정의 컨버터를 xml에 추가
root-context.xml
servlet-context.xml
Level.java
MyStringToLevel.java
HomeController.java
테스트
http://localhost:8080/mytest/test?level=1
결과
INFO : com.yakolla.mytest.HomeController - Welcome home! The client locale is GOLD.