Velocity #macro 사용 방법
Velocity는 java method를 사용할 수 있어서 굉장히 좋긴한데 적당한 에디터가 없어서 참 안타깝습니다. 하나하나 기억하면서 코드를 써야하다니... ㅠ

어쨌거나 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를 이용한 방법으로 깔끔히 구현되어 있더라는... -_-;;;;;
뭘 한거죠? ㅠㅠ



반응형