캠핑과 개발

1. VTL(Velocity Template Language) 장점
@ UI 디자이너와 개발자의 병렬 개발 가능
@ 각각의 영역에 집중가능
@ 유지보수 용의
@ JSP,PHP 대체방안 제시


2. VTL 문장은 # 으로 시작하며  변수명은 $ 로 표시한다.
- VTL 문장의 시작은 #으로 시작합니다.
- 변수의 시작은 $로 시작합니다.

# set( $foo = "Velocity")


따라서 다음과 같이 #set($color = "blue") 라고 하면 $color 변수에 String "blue" 값을 담는 VTL 문법이 되겠습니다. 그러면 Hello World 를 출력해보도록 하겠습니다.

<html>
<body>
#set($color = "blue")
내가 좋아하는 색깔은 $color 입니다.
</body>
</html>


*VTL을 실행하기 위해서는 필수적인 Jar 파일이 있습니다. 아래의 Jar 파일을 WEB-INF/lib 안에 복사하세요

velocity-dep-*.jar : velocity 그리고 관련된 클래스 파일
velocity-tools-*.jar : velocity tool
commons-digester
commons-collections
commons-beanutils


3. 주석처리방법
한줄 : ##
여러줄 : #*  *#


VTL에서 주석은 다음과 같이 사용합니다. 일반적으로 주석이라 하면 <!-- --> 을 사용했는데, VTL은 다음과 같은 주석을 사용합니다.

## This is Commnets!!

#*
This is Comments!!
*#



4. 자바객체사용해서 하위 객체 접근이 가능하다
$ custom.Address
$ custom.getAddress()



5. 값을 불러오는 여러가지 방법
$ customer.address 를 다음과 같이 표현할수 있다.
$ getaddress()
$ getAddress()
$ get("address")
$ isAddress()


6. 중간에 변수가 들어가서 잘못 파싱되는것을 방지하기위해 쓰는 방식인데 기본적으로 이렇게 처리하는 버릇을 들이자 
Jack is a $vicemaniac.
Jack is a ${vice}maniac.


7. 값이 없을 시에 공백처리를 원할때
<input type="text" name="email" value="$!email>
좀더 안전하기를 원하면 value="$!{email}"


8. #set 지시자 사용시 큰따옴포("") 안의 내용은 파싱되어 그 결과물을 출력한다.
#set( $template = "$directoryRoot / $templateName")
지시 및 연산 변수의 경우는 다음과 같습니다.

#set( $a= 10 )
#set( $b= 20 )
#set( $value = $a + 1 ) ## 11
#set( $value = $b - 1 ) ## 9
#set( $value = $a * $b ) ## 200
#set( $value = $a / $b ) ## 0.5


9. '' 작은 따옴표는 파싱되지 않고 내용이 그대로 출력되지만

velocity.properties 안의 Stringliterals.interpolote = false 값을 바꿈으로서 파싱이 되도록 설정한다.

10. for 문으로 반복문을 처리하고 싶을때
iterator 와 비슷한 형태의 구조이다.
#foreach($page in $boardList)
<!-- 처리하고자 하는 내용 -->
#end



11. if 문을 쓰고싶을때
#if($velocityCount <= 3)
   $item
#end

그 외 제어문은 다음과 같습니다.

#set($a = 10)

#if($a > 9)
   9보다 큽니다
#elseif($a == 10)
   10과 같습니다
#end


반복문의 경우는 다음과 같습니다.

<ul>
#foreach( $product in $allProducts )
<li>$product.id , $product.name</li>
#end
</ul>


일반적인 foreach와 같습니다. Controller에서 ArrayList 객체를 allProducts로 네임을 정해서 View 단으로 보냈다면 위와 같은 문법으로 allProducts의 객체를 $product로 담고, $product를 통해 각 프로퍼티를 출력할 수 있습니다.

출처 : http://dsstory.tistory.com/105