Groovy-템플릿 엔진

Groovy의 템플릿 엔진은 메일 병합 (데이터베이스에서 편지 및 봉투에 자동으로 이름과 주소를 추가하여 메일, 특히 광고, 많은 주소로 보내는 메일을 자동으로 추가)처럼 작동하지만 훨씬 더 일반적입니다.

문자열의 간단한 템플릿

아래의 간단한 예를 살펴보면 먼저 "Groovy"문자열을 포함 할 이름 변수를 정의합니다. println 문에서 $ 기호를 사용하여 값을 삽입 할 수있는 매개 변수 또는 템플릿을 정의합니다.

def name = "Groovy" 
println "This Tutorial is about ${name}"

위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다. 출력은 $ name이 def 문에 의해 할당 된 값으로 대체되었음을 명확하게 보여줍니다.

간단한 템플릿 엔진

다음은 매개 변수화 된 텍스트를 생성하기 위해 템플릿에서 JSP와 유사한 스크립틀릿 및 EL 표현식을 사용할 수있는 SimpleTemplateEngine의 예입니다. 템플릿 엔진을 사용하면 정의 된 자리 표시자가있는 문자열에서 대체 될 수 있도록 매개 변수 및 해당 값 목록을 바인딩 할 수 있습니다.

def text ='This Tutorial focuses on $TutorialName. In this tutorial you will learn 

about $Topic'  

def binding = ["TutorialName":"Groovy", "Topic":"Templates"]  
def engine = new groovy.text.SimpleTemplateEngine() 
def template = engine.createTemplate(text).make(binding) 

println template

위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다.

이제 XML 파일에 템플릿 기능을 사용해 보겠습니다. 첫 번째 단계로 Student.template이라는 파일에 다음 코드를 추가해 보겠습니다. 다음 파일에서 요소에 대한 실제 값이 아니라 자리 표시자를 추가했음을 알 수 있습니다. 따라서 $ name, $ is 및 $ subject는 모두 런타임에 교체해야하는 자리 표시 자로 배치됩니다.

<Student> 
   <name>${name}</name> 
   <ID>${id}</ID> 
   <subject>${subject}</subject> 
</Student>

이제 Groovy 스크립트 코드를 추가하여 위 템플릿을 실제 값으로 대체하는 데 사용할 수있는 기능을 추가해 보겠습니다. 다음 코드에 대해 다음 사항에 유의해야합니다.

  • 자리 표시 자와 실제 값의 매핑은 바인딩 및 SimpleTemplateEngine을 통해 수행됩니다. 바인딩은 자리 표시자를 키로 사용하고 대체를 값으로 사용하는 맵입니다.

import groovy.text.* 
import java.io.* 

def file = new File("D:/Student.template") 
def binding = ['name' : 'Joe', 'id' : 1, 'subject' : 'Physics']
				  
def engine = new SimpleTemplateEngine() 
def template = engine.createTemplate(file) 
def writable = template.make(binding) 

println writable

위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다. 출력에서 값이 관련 자리 표시 자에서 성공적으로 대체되었음을 알 수 있습니다.

<Student> 
   <name>Joe</name> 
   <ID>1</ID> 
   <subject>Physics</subject> 
</Student>

StreamingTemplateEngine

StreamingTemplateEngine 엔진은 Groovy에서 사용할 수있는 또 다른 템플릿 엔진입니다. 이것은 SimpleTemplateEngine과 동일하지만 쓰기 가능한 클로저를 사용하여 템플릿을 생성하여 큰 템플릿에 대해 더 확장 가능합니다. 특히이 템플릿 엔진은 64k보다 큰 문자열을 처리 할 수 ​​있습니다.

다음은 StreamingTemplateEngine이 사용되는 방법의 예입니다.

def text = '''This Tutorial is <% out.print TutorialName %> The Topic name 

is ${TopicName}''' 
def template = new groovy.text.StreamingTemplateEngine().createTemplate(text)
  
def binding = [TutorialName : "Groovy", TopicName  : "Templates",]
String response = template.make(binding) 
println(response)

위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다.

This Tutorial is Groovy The Topic name is Templates

XMLTemplateEngine

XmlTemplateEngine은 템플릿 소스와 예상 출력이 모두 XML이되는 템플릿 시나리오에서 사용됩니다. 템플릿은 일반적인 $ {expression} 및 $ variable 표기법을 사용하여 템플릿에 임의의 식을 삽입합니다.

다음은 XMLTemplateEngine이 사용되는 방법의 예입니다.

def binding = [StudentName: 'Joe', id: 1, subject: 'Physics'] 
def engine = new groovy.text.XmlTemplateEngine() 

def text = '''\
   <document xmlns:gsp='http://groovy.codehaus.org/2005/gsp'>
      <Student>
         <name>${StudentName}</name>
         <ID>${id}</ID>
         <subject>${subject}</subject>
      </Student>
   </document> 
''' 

def template = engine.createTemplate(text).make(binding) 
println template.toString()

위의 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다.

Joe
    
    
   1
    
    
   Physics