2012-07-30 107 views
1

在我们的应用程序中,系统正在发送大量电子邮件。这些电子邮件对于具有填充动态数据的不同上下文变量的所有用户具有相同的格式。Grails中的运行时脚本评估 - 最佳实践

我们现在正在规划一项功能,允许管理员编辑和自定义这些模板。因此,该计划是在运行时使用groovy shell来评估模板,例如,

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. 上述代码中最大的瓶颈是什么?那个工程?评估?

感谢

回答

0

我建议,因为它超越了只是Groovy中的eval使用类似GroovyPagesTemplateEngine和你,你可以使用所有的taglib善良以及Grails的。我正在为您的确切场景使用GroovyPagesTemplateEngine和SimpleTemplateEngine。

SimpleTemplateEngine稍快,所以如果我不需要比简单的绑定更多的东西,我可以使用它。当我需要处理逻辑和控制结构时,我使用GroovyPagesTemplateEngine。

+0

thx。有没有关于它的文档?我在用户指南中找不到它。 – 2012-07-31 01:01:32

+0

不,实际上没有。但它非常简单。几乎与使用GroovyShell相同。只要看一下API,如果你做了Google搜索,就会有一些例子。 – Gregg 2012-07-31 01:09:49

+0

再次感谢。我结束了使用SimpleTemplateEngine,因为它拥有我需要的一切...... cowper – 2012-08-01 08:29:54