Groovy-template-engines

提供:Dev Guides
移動先:案内検索

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