Velocity #macro 사용 방법
Velocity는 java method를 사용할 수 있어서 굉장히 좋긴한데 적당한 에디터가 없어서 참 안타깝습니다. 하나하나 기억하면서 코드를 써야하다니... ㅠ
어쨌거나 Velocity의 자체 함수라 할 수 있는 #macro 사용법에 대해 정리해봅니다.
이렇게 정의된 #macro는
이렇게 사용할 수 있습니다.
인자를 넘겨주는 방법은
이 #macro를 사용하는 방법은 다음과 같습니다.
여러 인자를 넘겨주기 위해서는 공백으로 인자를 나열하면 됩니다.
이를 이용해서 List의 paging을 구현해 보았습니다.
열심히 구현하고서 아주 만족하고 있었는데..
정작 적용하려는 코드에서는 Java를 이용한 방법으로 깔끔히 구현되어 있더라는... -_-;;;;;
뭘 한거죠? ㅠㅠ
어쨌거나 Velocity의 자체 함수라 할 수 있는 #macro 사용법에 대해 정리해봅니다.
#macro(hello)
hello, world
#end
이렇게 정의된 #macro는
#hello()
이렇게 사용할 수 있습니다.
인자를 넘겨주는 방법은
#macro(hello $name)
hello, $name
#end
이 #macro를 사용하는 방법은 다음과 같습니다.
#hello("Joo")
여러 인자를 넘겨주기 위해서는 공백으로 인자를 나열하면 됩니다.
이를 이용해서 List의 paging을 구현해 보았습니다.
#macro(printPageNavigationBar $pageNo $pageStart $pageEnd $pageCount $url)
#set ($left_arrow = "<img src='left_arrow.gif' alt='왼쪽 화살표' />")
#set ($left_big_arrow = "<img src='left_big_arrow.gif' alt='왼쪽 쌍화살표' />")
#set ($right_arrow = "<img src='right_arrow.gif' alt='오른쪽 쌍화살표' />")
#set ($right_big_arrow = "<img src='right_big_arrow.gif' alt='오른쪽 쌍화살표' />")
#if ($pageStart > 1)
#set ($pagePrev = $pageStart - 1)
<a href='${url}?pageNo=1' title='첫 페이지로 이동'>${left_big_arrow}</a>
<a href='${url}?pageNo=${pagePrev}' title='${pagePrev} 페이지로 이동'>${left_arrow}</a>
#else
${left_big_arrow}
${left_arrow}
#end
#foreach ( $i in [$pageStart..$pageEnd] )
#if ($pageNo == $i)
${i}
#else
<a href='${url}?pageNo=$i' title='${i}페이지로 이동'>${i}</a>
#end
#end
#if ($pageEnd < $pageCount)
#set ($pageNext = $pageEnd + 1)
<a href='${url}?pageNo=${pageNext}' title='${pageNext} 페이지로 이동'>${right_arrow}</a>
<a href='${url}?pageNo=${pageCount}' title='마지막 페이지로 이동'>${right_big_arrow}</a>
#else
${right_arrow}
${right_big_arrow}
#end
#end
열심히 구현하고서 아주 만족하고 있었는데..
정작 적용하려는 코드에서는 Java를 이용한 방법으로 깔끔히 구현되어 있더라는... -_-;;;;;
뭘 한거죠? ㅠㅠ
반응형