스프링의 컨버전 서비스에 컨버터들을 등록하여 잘 사용이 되는 것을 확인 하였다.
근데, 또 반대로 뷰 템플릿에 보여줄 때는 객체나 이런 것 들을 문자로써 보여줘야 한다.
물론 이게 자동으로 된다.
@Controller
public class ConverterController {
@GetMapping("/converter-view")
public String converterView(Model model){
model.addAttribute("ipPort", new IpPort("127.0.0.0", 8080));
return "converter-view";
}
}
컨트롤러의 모델에 IpPort 객체를 담고, 그 모델을 converter-view.html로 가져가는 것이다.
<li>${ipPort}: <span th:text="${ipPort}" ></span></li>
<li>${{ipPort}}: <span th:text="${{ipPort}}" ></span></li>
태그의 자식으로써 들어가는 ${ipPort}는 당연히 그냥 그대로 텍스트로 출력되는거고,
타임리프의 기능안에 들어가 있는 ${ipPort}는 변수로써 인지되는데,
여기 보면 중괄호 하나를 쓰는 것과 두개를 쓰는 것이 있는데
중괄호 하나를 쓰는 것은 컨버터가 적용되지 않는 것이고,
중괄호 두개를 쓰는 것은 컨버터가 적용되는 것이다.
- ${ipPort}: hello.typeconverter.type.IpPort@59cb0945
- ${{ipPort}}: 127.0.0.0:8080
결과이다.
중괄호 하나 쓴 것은 컨버터가 적용되지 않아 객체 자체의 toString()이 출력되었고
컨버터가 적용 된 것은 멤버의 값이 다 문자열로 바뀌고 그게 이어져서 출력되었다.
참고로 타임리프의 기능 중 하나인
<input type="text" th:field="*{ipPort}"><br/>
th:field는 저렇게 중괄호 하나만 해도 자동으로 컨버터가 적용된다.
'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글
81. 포맷터 스프링(컨버전서비스)에 등록 (0) | 2023.09.24 |
---|---|
80. 포맷터 (0) | 2023.09.24 |
78. 컨버전서비스 실제 사용 (0) | 2023.09.23 |
77. 컨버전 서비스 (0) | 2023.09.23 |
76. 스프링 타입컨버터 (0) | 2023.09.22 |