コントローラーでel式の値を動的に取得するにはどうすればよいですか。式の場合。
class ElController {
def index() = {
def a = "\${1 + 3}"
unknownElEvaluator(a) // ->"2"
....
}
}
これは、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()
}