머스태시(Mustache)
1. Ruby, JS, Python, Java 등 대부분의 언어를 지원하는 심플한 템플릿 엔진
2. Java에서 사용될 땐 서버 템플릿 엔진, JS에서 사용될 땐 클라이언트 템플릿 엔진
3. 제일 큰 장점 = Thymeleaf나 JSP와 달리 커뮤니티 버전에서도 플러그인 사용 가능!
Spring Boot에서의 적용
1. src/main/resourcest/templates 위치에 머스태시 파일을 두면 스프링부트에서 자동을 로딩
2. View Resolver가 앞의 경로, 뒤의 확장자를 지정해주므로 적절한 문자열만 반환하면 된다.
cf) View Resolver = URL 요청의 결과를 전달할 타입과 값을 지정하는 관리자
@Controller
public class IndexController {
@GetMapping("/")
public String index(){
return "index";
}
}
3. layout 적용
{{>layout/header}}
<h1>스프링 부트로 시작하는 웹 서비스</h1>
{{>layout/footer}}
4. for문 및 리스트사용
- {{#리스트이름}}으로 순회
{{#posts}} // posts라는 List를 순회한다
<tr>
<td>{{id}}</td> // List에서 뽑아낸 객체의 필드를 사용
<td>{{title}}</td>
</tr>
{{/posts}}
5. 단일변수
- {{변수이름}}으로 조회
- 필드 접근 시 점(.)
- readonly 속성을 추가하여 id는 수정할 수 없도록 한다
#Controller에서 model.addAttribute("post", dto)로 추가할 때
<input type="text" id="id" value="{{post.id}}" readonly>
6. if문을 제공하지 않음
- true / false 여부만 판단
- 따라서 mustache에는 항상 최종값을 넘겨줘야 함
<!-- userName이 존재해서 true인 경우 -->
{{#userName}}
{{userName}}님 환영합니다.
<a href="/logout">Logout</a> //spring-security 기본제공 로그아웃URL
{{/userName}}
<!-- userName이 없어서 true인 경우 -->
{{^userName}}
로그인해주세요.
<a href="/oauth2/authorization/google">Login</a> //spring-security 기본제공 로그인URL
{{/userName}}
'학습 > Java' 카테고리의 다른 글
[java] Optional 클래스 (0) | 2020.02.29 |
---|---|
[java] Enum의 개념과 사용법 (0) | 2020.02.23 |
[java] 템플릿 엔진 / SSR & CSR / JSP와 Mustache / 정적파일 (0) | 2020.02.10 |
[java] 테스트를 도와주는 JUnit / assertJ / h2 (0) | 2020.02.09 |
[java] @Entity와 @Builder (0) | 2020.02.05 |
댓글