본문 바로가기
학습/Java

[java] Mustache 사용하기

by KKambi 2020. 2. 15.

머스태시(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}}

댓글