1

私たちのアプリケーションでは、多数の電子メールがシステムから送信されています。これらの電子メールは、動的データを入力するさまざまなコンテキスト変数を使用して、すべてのユーザーに対して同じ形式でした。

現在、管理者がこれらのテンプレートを編集およびカスタマイズできるようにする機能を計画しています。そのため、Groovy シェルを使用して実行時にテンプレートを評価する計画があります。

Binding binding = new Binding();
binding.setVariable("model", [var1: "First Name", var2: "Last Name"])
GroovyShell shell = new GroovyShell(binding);

Object email = shell.evaluate('return "<html><title>Test Shell</title><body>${model.var1} ${model.var2}</body></html>";');

これは私たちにとって十分に機能しているようです。私が持っている質問は次のとおりです。

  1. GroovyShell は使用するのに適したエンジンですか、それとも Rhino または他のエンジンの方が優れていますか?
  2. 注意すべきパフォーマンス上の問題やメモリの問題はありますか? 最適化できる簡単な方法、つまりシェルやバインディングを再利用できるもの
  3. 上記のコードの最大のボトルネックは何ですか? 建設?評価は?

ありがとう

4

2 に答える 2

0

Grails の場合は、代わりにページ レンダリング API を使用してください。http://grails.org/doc/2.0.x/guide/introduction.html#whatsNew

于 2012-07-31T16:53:40.697 に答える
0

Groovy PagesTemplateEngine のようなものを使用することをお勧めします。これは、Groovy eval だけでなく、すべての grails taglib の利点も使用できるためです。正確なシナリオでは、GroovyPagesTemplateEngine と SimpleTemplateEngine の両方を使用しています。

SimpleTemplateEngine はわずかに高速なので、単純なバインディング以上のものが必要ない場合は、それを使用します。ロジックと制御構造を扱う必要があるときは、GroovyPagesTemplateEngine を使用します。

于 2012-07-30T23:30:23.303 に答える