스프링 MVC 2 - 뷰 템플릿에 컨버터 적용하기
반응형
뷰 템플릿에 컨버터 적용하기
이번에는 뷰 템플릿에 컨버터를 적용하는 방법을 알아보자.
타임리프는 랜더링시에 컨버터를 적용해서 랜더링하는 방법을 편리하게 지원한다.
이전까지는 문자를 객체로 변환했다면, 이번에는 그 반대로 객체를 문자로 변환하는 작업을 확인할 수 있다.
ConverterController
Model에 숫자 10000와 ipPort 객체를 담아서 뷰 템플릿에 전달한다.
resources/templates/converter-view.html
타임리프는 ${{...}}를 사용하면 자동으로 컨버전 서비스를 사용해서 변환된 결과를 출력해준다.
물론 스프링과 통합되어서 스프링이 제공하는 컨버전 서비스를 사용하므로, 우리가 등록한 컨버터들을 사용할 수 있다.
변수 표현식 : ${...}
컨버전 서비스 적용 : ${{...}}
실행
http://localhost:8080/converter-view
실행 결과
실행 결과 로그
- ${{number}} : 뷰 템플릿은 데이터를 문자로 출력한다. 따라서 컨버터를 적용하게 되면 Integer 타입인 10000을 String 타입으로 변환하는 컨버터인 IntegerToStringConverter를 실행하게 된다.
이 부분은 컨버터를 실행하지 않아도 타임리프가 숫자를 문자로 자동으로 변환하기 때문에 컨버터를 적용할 때와 하지 않을 때가 같다. - ${{ipPort}} : 뷰 템플릿은 데이터를 문자로 출력한다. 따라서 컨버터를 적용하게 되면 IpPort 타입을 String 타입으로 변환해야 하므로 IpPortToStringConverter가 적용된다. 그 결과 127.0.0.1:8080 가 출력된다.
폼에 적용하기
이번에는 컨버터를 폼에 적용해보자.
ConverterController - 코드 추가
Form 객체를 데이터를 전달하는 폼 객체로 사용한다.
- GET /converter/edit : IpPort를 뷰 템플릿 폼에 출력한다.
- POST /converter/edit : 뷰 템플릿 폼의 IpPort 정보를 받아서 출력한다.
resources/templates/converter-form.html
타임리프의 th:field는 앞서 설명했듯이 id, name를 출력하는 등 다양한 기능이 있는데, 여기에 컨버전 서비스도 함께 적용된다.
실행
http://localhost:8080/converter/edit
- GET /convert/edit
- th: field 가 자동으로 컨버전 서비스를 적용해주어서 ${{ipPort}} 처럼 적용이 되었다. 따라서 IpPort → String으로 변환된다.
- POST /convert/edit
- @ModelAttribute를 사용해서 String → IpPort로 변환된다.
반응형
'Spring' 카테고리의 다른 글
스프링 MVC 2 - 포맷터를 지원하는 컨버전 서비스 (0) | 2022.10.07 |
---|---|
스프링 MVC 2 - 포맷터 - Formatter (0) | 2022.10.07 |
스프링 MVC 2 - 스프링에 Converter 적용하기 (0) | 2022.10.06 |
스프링 MVC 2 - 컨버전 서비스 - ConversionService (0) | 2022.10.06 |
스프링 MVC 2 - 타입 컨버터 - Converter (0) | 2022.10.05 |
댓글
이 글 공유하기
다른 글
-
스프링 MVC 2 - 포맷터를 지원하는 컨버전 서비스
스프링 MVC 2 - 포맷터를 지원하는 컨버전 서비스
2022.10.07 -
스프링 MVC 2 - 포맷터 - Formatter
스프링 MVC 2 - 포맷터 - Formatter
2022.10.07 -
스프링 MVC 2 - 스프링에 Converter 적용하기
스프링 MVC 2 - 스프링에 Converter 적용하기
2022.10.06 -
스프링 MVC 2 - 컨버전 서비스 - ConversionService
스프링 MVC 2 - 컨버전 서비스 - ConversionService
2022.10.06