반응형
레이아웃이란? 레아아웃을 사용하는 이유는 만약 100개의 페이지에 똑같은 header와 footer가 들어갈 경우 각각의 HTML마다 똑같은 header와 footer를 추가하는 것은 상당히 비효율적이고 유지보수면에서도 좋지 않다. 그래서 반복되는 화면이 있어 HTML 코드를 줄일 때 레이아웃을 적용하면 상당히 효과적이다. 타임리프 레이아웃 적용하기 의존성추가 레이아웃 기능을 사용하기 위해 아래의 의존성을 build.gradle에 추가하자. implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' 폴더 구조 /layout/fragments/header.html 각 페이지마다 상단 부분에 반복적으로 들어가는 내용을 추가한다. 헤더입니다. /lay..
상품명 가격 수량 아래의 HTML 코드를 보면 상품명 또는 가격, 수량으로 각 구분자의 표시되는 이름들이 하드코딩 되어있습니다. 지금이야 간단한 HTML 이라서 상관은 없겠지만, 만약 여러 HTML에 동일하게 적용되어있는 상품명, 가격, 수량의 이름이 변경되어야 한다면 어떨까요? 일일히 HTML을 다 들어가서 하나씩 지우고 수정하고 해야 할 것입니다. 이러한 번거로움 작업을 메시지 기능을 통해 관리하는 방법을 알아봅시다. 메시지 기능 적용하기 먼저 messages.properties 라는 메시지 관리용 프로퍼티 파일을 만들어 줍니다. 그리고 key , value 형식으로 값을 입력합니다. ( {0}, {1} ... 등 파라미터도 적용 가능) item=상품 item.id=상품 ID item.itemName..
타임리프는 스프링과 통합을 위한 다양한 기능을 편리하게 제공합니다. 스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object (기능 강화, 폼 커맨드 객체 선택) th:field , th:errors , th:errorclass 폼 컴포넌트 기능 checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원 스프링의 메시지, 국제화 기능의 편리한 통합 스프링의 검증, 오류 처리 통합 스프링의 변환 서비스 통합(ConversionService) 입력 폼 처리 th:object 커맨드 객체를 지정 *{...} 선택 변수 식 (th:object 에..
레이아웃을 사용하는 이유? 레아아웃을 사용하는 이유는 만약 100개의 페이지에 똑같은 header와 footer가 들어갈 경우 각각의 HTML마다 똑같은 header와 footer를 추가하는 것은 상당히 비효율적이고 유지보수면에서도 좋지 않습니다. 그래서 반복되는 화면이 있어 HTML 코드를 줄일 때 레이아웃을 적용하면 상당히 효과적입니다. 템플릿 조각 템플릿 조각은 공통으로 적용할 부분을 조각조각으로 만들어 필요한 공통의 부분들에 가져다 쓰는 방식입니다. 가 있는 태그는 다른곳에 포함되는 코드 조각으로 코드 조각을 사용할 때는 조각 표현식 ~{...}를 사용합니다. Controller @Controller @RequestMapping("/template") public class TemplateCont..
Thymeleaf(타임리프)란 ? 타임리프는 JSP, Freemarker와 같은 템플릿 엔진의 일종으로 다음과 같은 특징을 갖고 있습니다. 서버 사이드 HTML 렌더링 (SSR) 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용합니다. 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특징을 가지기 때문에, 타임리프로 작성한 파일은 HTML을 유지해서 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수도 있습니다. 이렇게 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿 (natural templates)이라고 합니다. 스프링 통합 지원 스프링과 통합되어 있어, 스프링..