Mustache는 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있는 논리적이지 않은 템플릿 시스템입니다. Mustache 템플릿은 "논리적이지 않다"는 점에서 특이한데, 이 말은 템플릿 안에서 조건문이나 반복문 같은 논리 연산을 수행하지 않고, 단순히 데이터를 템플릿에 삽입하는 역할만 한다는 것을 의미합니다. Mustache는 HTML, XML, JSON, YAML 등 다양한 텍스트 형식에 사용될 수 있습니다.
즉 jsp jstl 과 다르게 연산을 할 수 없으므로 자바에서 모든 구조를 만들고 mustache로 넘겨야한다.
1.application.properties
설정
spring.mustache.servlet.expose-request-attributes=true spring.mustache.servlet.expose-session-attributes=true
기본적으로 mustache는 서버의 request객체나 session객체에 접근이 불가능하기에 프로퍼티에 접근이 가능하도록 등록해야한다.
2.문법 controller
//GET, POST
@GetMapping("/board")
public String list(HttpServletRequest request) {
// model 이 Httpservletrequest이다.
List<Board> boardList = boardRepository.findAll();
request.setAttribute("models", boardList);
HttpSession session = request.getSession();
session.setAttribute("num", 1);
return "board/list";
}
boardList정보를 request객체에 저장을 하엿고 이를 models라고 했다.
또한 session에 num이라는 키값으로 숫자 1을 저장을 했다.
3.문법 mustache파일
{{>layout/header}}
<div class="container p-5">
<h1>{{num}}</h1>
{{#models}}
<div class="card mb-3">
<div class="card-body">
<h4 class="card-title mb-3">{{title}}</h4>
<a href="/board/{{id}}" class="btn btn-primary">상세보기</a>
</div>
</div>
{{/models}}
</div>
{{>layout/footer}}
{{}}안에 키값만으로 접근이 가능하면
반복문을 쓰기 위해서는 {{#키값}} {{/키값}}을 통해서 사용이 가능하다.
Share article