是否有类似 JSP 的基于 Java 的 Web 模板引擎可以从持久存储中加载页面模板?

发布于 2024-10-23 12:53:26 字数 781 浏览 3 评论 0原文

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

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

然后是 VTL 的 限制(首先不支持标签库) )我们查看了 Freemarker

它具有所有优点,但我想知道这是不是 其他替代方案是 eclipse JET,目前

我不知道还有什么其他选择,

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

有类似的东西吗? (除了 JET 和 JBoss 的 Freemarker buggy 插件)

I would like to provide users to write plugins to my application, the initial design and implementaion involve a Velocity (VTL) template engine to allow

  • Secure: uesrs can't call internall Java code (without hacking using reflection)
  • Simple: Limited and confined API, I can write my own domain specific language
  • Portable: I can store VTL templates in a JAR, in the database or anywhere I like
  • Decoupled: template context and logic / controller is not coupled to the web / HTML

Then with the limitations of VTL (no tag library support as first) we looked at Freemarker

It has all the advantages, but I wonder if this is as good as it gets

The other alternatives are eclipse JET, and I don't know of anything else at the moment

I would like a solution that can have Java content assist (like JSP) but that can be saved in the database

Is there something like this out there? (Besides JET, and JBoss's Freemarker buggy plugin)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧街凉风 2024-10-30 12:53:26

查看Thymeleaf

我还没用过它..还没有!

开发人员设计它似乎是为了解决 Velocity 和 FreeMaker 的缺点。

Check out Thymeleaf.

I haven't used it.. YET!

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

清秋悲枫 2024-10-30 12:53:26

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

为了解决您的问题:

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

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

祝你好运!

I have successfully used FreeMarker on several projects.

To address your concerns:

  • Processing a template - even one written by a user - is secure if you don't expose any unsafe method in your model. In general, the model should only contain immutable objects (e.g. Strings, numbers) and collections of those (e.g. List, Map), and not be related in any way to the control layer of your MVC application.
  • FreeMarker is simple enough for programmers, but not necessarily for web designers or editors.
  • FreeMarker templates can be stored anywhere you like, since the template loader can be anything you can imagine. Have a look at the API documentation.
  • FreeMarker templates are confined to the view layer of your MVC application, as long as you don't publish any sensible method in your model (see first point). Unlike JSP, they are completely unaware of the Servlet API.

As for content assist, most major IDE's (IntelliJ, Eclipse, probably NetBeans) have support for the FreeMarker syntax and should provide auto-completion for the keywords. If you want a JavaScript-based editor for FreeMarker, I'm not as affirmative since I know of none.

Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文