如何在控制器中动态获取el表达式的值。对于方程
class ElController {
def index() = {
def a = "\${1 + 3}"
unknownElEvaluator(a) // ->"2"
....
}
}
答案 0 :(得分:3)
您可以使用Groovy SimpleTemplateEngine执行此操作:
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()
}