Back End/etc
[JSP] Apache Tiles
DevPing9_
2022. 4. 13. 18:35
Apache Tiles
그 중에서도 리액트마냥 컴포넌트 단위로 작성할 수 있게 끔 해주는 라이브러리
templates 을 만들고 contents 를 채워가는 방식
상속을 이용하여 html 을 조립하고, 런타임 시 페이지들이 조각되어 만들어진다.
Apache Tiles 의 상속
1. tiles-definition.xml 의 정의
해당 xml 에 <definition> 으로 사용할 컴포넌트(.jsp)를 정의한다.
<definition> 하위에 <put-attribute> 로 상속시킬 하위 컴포넌트(.jsp)들을 입력한다.
* put-attribute 에 입력한다고 html 에 자동으로 컴포넌트가 추가되는게 아니다.
* 실질적인 호출이 있기 전까지는 html 에 추가되지 않는다.
> [tiles-definition.xml]
<definition name="base-layout"
template="/WEB-INF/views/tiles/template/base-layout.jsp"/>
<put-attribute name="title" value="Ping9's Blog"/>
<put-attribute name="body" value=""/>
<put-attribute name="page-script" value=""/>
</definition>
<definition name="dashboard" extends="base-layout">
<put-attribute name="title" value="Welcome to My DashBoard!"/>
<put-attribute name="body" value="/WEB-INF/views/pages/dashboard/main.jsp"/>
<put-attribute name="page-script" value="/resources/dist/js/dashboard.js"/>
</definition>
<definition name="stylesheet" template="/WEB-INF/views/tiles/component/stylesheet.jsp"/>
2. 상속받은 컴포넌트의 호출
dashboard 는 base-layout 을 상속 받아 body 에 main.jsp 가 삽입된다.
코드 예시 보는게 가장 빠르다.
> [base-layout.jsp]
<head>
<tiles:importAttribute name="title" />
<tiles:insertDefinition name="stylesheet" />
<script type="text/javascript" src="<tiles:getAsString name="page-script"/>"></script>
</head>
<body>
<div>
<tiles:insertAttribute name="body" />
</div>
</body>
> [ViewController.java]
public class ViewController {
@GetMapping("/dashboard")
public ModelAndView getDashboard(HttpSession session) {
ModelAndView mav = new ModelAndView("dashboard");
/*
...
business logic here
...
*/
return mav;
}
}
728x90