3

コントローラーでel式の値を動的に取得するにはどうすればよいですか。式の場合。

class ElController {
  def index() = {
    def a = "\${1 + 3}"
    unknownElEvaluator(a) // ->"2"
    ....
  }
}
4

1 に答える 1

3

これは、GroovySimpleTemplateEngineを使用して行うことができます。

import groovy.text.SimpleTemplateEngine

def binding = [:]
def a = "\${1 + 3}"
String rslt = new SimpleTemplateEngine().createTemplate( a )
                                        .make( binding )
                                        .toString()
assert rslt == '4' // 4 not 2 as in your question

なぜコントローラーでこれを行うのかを知るのは興味深いことですが...

または、次を追加できるはずです。

def groovyPagesTemplateEngine

コントローラに対して(または、コード内の複数の場所からこれを実行したい場合があるため、別のサービスクラスとして)

次に、メソッドの内部から次の手順を実行します。

def binding = [:]
def a = "\${1 + 3}"

String rslt = new StringWriter().with { writer ->
  groovyPagesTemplateEngine.createTemplate( a, 'myscript' )
                           .make( binding )
                           .writeTo( writer )
  writer.toString()
}
于 2012-07-09T11:47:12.100 に答える