1

我想为用户提供为我的应用程序编写插件,初始设计和实现涉及Velocity (VTL) 模板引擎以允许

  • 安全:用户不能调用内部 Java 代码(不使用反射进行黑客攻击)
  • 简单:有限且受限的 API,我可以编写自己的领域特定语言
  • 便携:我可以将 VTL 模板存储在 JAR、数据库或任何我喜欢的地方
  • 解耦:模板上下文和逻辑/控制器不耦合到 web/HTML

然后由于 VTL 的限制(首先没有标签库支持),我们查看了Freemarker

它具有所有优点,但我想知道这是否与它一样好

其他的选择是eclipse JET,目前我不知道还有什么

我想要一个可以有Java 内容辅助(如 JSP)但可以保存在数据库中的解决方案

外面有这样的东西吗?(除了 JET 和 JBoss 的 Freemarker buggy 插件)

4

2 回答 2

4

Check out Thymeleaf.

I haven't used it.. YET!

It appears the developer designed it to address the shortcomings of Velocity and FreeMaker.

于 2011-12-02T21:53:06.447 回答
1

我已经在几个项目中成功使用了 FreeMarker。

解决您的疑虑:

  • 如果您不在模型中公开任何不安全的方法,则处理模板(即使是用户编写的模板)也是安全的。一般来说,模型应该只包含不可变对象(例如字符串、数字)和这些对象的集合(例如列表、映射),并且不以任何方式与您的 MVC 应用程序的控制层相关。
  • FreeMarker 对程序员来说足够简单,但对网页设计师或编辑来说却不一定。
  • FreeMarker 模板可以存储在您喜欢的任何地方,因为模板加载器可以是您可以想象的任何东西。查看 API 文档。
  • FreeMarker 模板仅限于 MVC 应用程序的视图层,只要您不在模型中发布任何合理的方法(请参阅第一点)。与 JSP 不同,它们完全不知道 Servlet API。

至于内容辅助,大多数主要 IDE(IntelliJ、Eclipse,可能是 NetBeans)都支持 FreeMarker 语法,并且应该为关键字提供自动完成功能。如果你想要一个基于 JavaScript 的 FreeMarker 编辑器,我不那么肯定,因为我不知道。

祝你好运!

于 2011-05-12T15:44:28.840 回答