본문 바로가기

Spring

스프링MVC2편 타임리프 - 기본기능 : 템플릿 레이아웃1

인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다.

무엇을 배웠나요?

  • 이전 에서는 일부 코드 조각을 가져와서 사용했다면 이번에는 개념을 확장해서 코드 조각을 레이 아웃에 넘겨서 사용하는 방법이다.
  • common_header(~{::title},~{::link}) 가 핵심이다.
    • ::title은 현재 페이지의 title은 현재 페이지의 title 태그들을 전달한다.
    • ::link는 현재 페이지의 link 태그들을 전달한다.
  • 메인 타이틀이 전달한 부분으로 교체되었다.
  • 공통 부분은 그대로 유지되고, 추가부분에 전달한 <link>들이 포함된것을 확인할 수 있다.

레이아웃 개념을 두고, 그 레이아웃에 필요한 코드 조각을 전달해서 완성하는 것으로 이해하면 된다.

(이전 에서는 템플릿 조각을 가져오고 파라미터를 넘겨서 가져왔다면 이번에는 템플릿 - 레이아웃 에 내가 필요한 태그 자체를 레이아웃에 넘겨서 렌더링을 완성한 것을 가져온다고 이해하면 될 듯 하다.)

궁금한 점은 무엇인가요?

  • 파라미터로 넘길때와 태그를 넘길때의 차이점이 조금 부족한듯 하다.
  • 템플릿에 있는 태그 값들은 왜 있는것인가 만약 title태그를 넘겨주지 않을때 해당값으로 렌더링이 되는것인가
  • html을 브라우저에서 그대로 실행할경우 사용자는 태그값을 확인할 수 있음

더 필요하다고 생각한 것이 있나요?

코드

<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="common_header(title,links)">
    <title th:replace="${title}">레이아웃 타이틀</title>

    <!-- 공통 -->
    <link rel="stylesheet" type="text/css" media="all" th:href="@{/css/awesomeapp.css}">
    <link rel="shortcut icon" th:href="@{/images/favicon.ico}">
    <script type="text/javascript" th:src="@{/sh/scripts/codebase.js}"></script>

    <!-- 추가 -->
    <th:block th:replace="${links}" />
</head>
<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="common_header(title,links)">
    <title th:replace="${title}">레이아웃 타이틀</title>

    <!-- 공통 -->
    <link rel="stylesheet" type="text/css" media="all" th:href="@{/css/awesomeapp.css}">
    <link rel="shortcut icon" th:href="@{/images/favicon.ico}">
    <script type="text/javascript" th:src="@{/sh/scripts/codebase.js}"></script>

    <!-- 추가 -->
    <th:block th:replace="${links}" />
</head>