Grails中的运行时脚本评估 - 最佳实践

时间:2012-07-30 21:48:36

标签: grails groovy groovyshell

在我们的应用程序中,系统发送了大量电子邮件。对于填充动态数据的不同上下文变量的所有用户,这些电子邮件的格式相同。

我们现在正计划一项功能,允许管理员编辑和自定义这些模板。因此,计划是使用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. 上述代码中最大的瓶颈是什么?那个工程?评价?
  4. 感谢

2 个答案:

答案 0 :(得分:0)

我建议使用像GroovyPagesTemplateEngine这样的东西,因为它不仅仅是Groovy eval,而且你可以使用所有grails taglib优点。我正在使用GroovyPagesTemplateEngine和SimpleTemplateEngine来完成您的确切场景。

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

答案 1 :(得分:0)

对于grails,请改用页面渲染api。 http://grails.org/doc/2.0.x/guide/introduction.html#whatsNew