3
如何在控制器中動態獲取el表達式的值。對於等式動態評估el表達式
class ElController {
def index() = {
def a = "\${1 + 3}"
unknownElEvaluator(a) // ->"2"
....
}
}
如何在控制器中動態獲取el表達式的值。對於等式動態評估el表達式
class ElController {
def index() = {
def a = "\${1 + 3}"
unknownElEvaluator(a) // ->"2"
....
}
}
你可以做到這一點與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
向您的控制器(或最好是單獨的Servi CE類,你可能最終想要在你的代碼要做到這一點從多個地方)
然後,從方法內,這樣做:
def binding = [:]
def a = "\${1 + 3}"
String rslt = new StringWriter().with { writer ->
groovyPagesTemplateEngine.createTemplate(a, 'myscript')
.make(binding)
.writeTo(writer)
writer.toString()
}
感謝。我想將消息翻譯成js和map * .js文件到將使用您的代碼示例的控制器。在這一刻我沒有看到任何其他解決方案。 – DraganS 2012-07-09 12:01:23
如果我把def a =「\ $ {g.message(code:'this.time.next.year.we.ll.be.millionaires')}」例外。是否需要空綁定? – DraganS 2012-07-09 12:28:50
@DraganS是的,嘗試第二種方法...它似乎爲我工作... – 2012-07-09 12:44:03