프리마커 간단한 매크로 만들기

탬플릿 기술인 프리마커를 사용해서 마치 JSP의 커스텀 태그와 비슷한 녀석을 만들 수 있습니다. 그런 녀석을 매크로라고 부릅니다.

프리마커를 사용한 기존의 코드는 다음과 같습니다. 아.. 이런 안타깝게도 순수 프리마커 지시자는 보이지 않습니다. 스프링이 지원하는 커스텀 지시자(매크로)만 보입니다.


<#import “/spring.ftl” as spring />
<html>
<head>
<title>회원 가입</title>
</head>
<body>
회원 정보 입력
<form action”” method=”POST”>
Name: <@spring.bind “member.name” /> <@spring.formInput “member.name” /> <@spring.showErrors “” /><br/>
<input type=”submit” value=”submit” />
</from>
</body>
</html>

뭐 상관없죠.  위에서 저 검은색 부분은 왠지 항상 세트로 나올 것만 같은 코드 입니다. 매번 타이핑하기도 귀찮고 <@bindInputError field=”member.name” /> 이렇게 하나의 태그로 줄여서 사용하고 싶습니다.

그럼 먼저 새로운 ftl 파일을 하나 만듭니다.


<#import “/spring.ftl” as spring />
<#macro bindInputError field>
 <@spring.bind “${field}” /> <@spring.formInput “${field}” /> <@spring.showErrors “” />
</#macro>

간단하죠. 태그 파일 만들듯이 만들면 됩니다. field라는 변수에는 어떤 값이 들어오는 값을 매크로 안에서 EL 표기법 같은 interpolation이라고 하는 것으로 그 안에 있는 값을 참조할 수있 습니다. 그리고 저 매크로를 사용하려면 다음과 같이 맨 위에 import로 매크로 파일을 추가해주고 사용하면 됩니다.


<#import “lib.ftl” as lib />
<#import “/spring.ftl” as spring />
<html>
<head>
<title>회원 가입</title>
</head>
<body>
회원 정보 입력
<form action”” method=”POST”>
Name: <@lib.bindInputError field=”member.name” /><br/>
<input type=”submit” value=”submit” />
</from>
</body>
</html>