我最近一直在 python 中使用ZPT,我喜欢模板语言。我一直在为 Java 寻找类似的东西,但也找不到我喜欢的东西。最接近的是FreeMarker。
我看到的 FreeMarker 和其他 Java 模板引擎的问题是它们的 JSP 样式语法允许不符合标准的 XML。我只是想知道是否有类似于 Zope 页面模板的 Java 模板引擎,因此它是一种需要有效 xml 的“属性”语言。
我最近一直在 python 中使用ZPT,我喜欢模板语言。我一直在为 Java 寻找类似的东西,但也找不到我喜欢的东西。最接近的是FreeMarker。
我看到的 FreeMarker 和其他 Java 模板引擎的问题是它们的 JSP 样式语法允许不符合标准的 XML。我只是想知道是否有类似于 Zope 页面模板的 Java 模板引擎,因此它是一种需要有效 xml 的“属性”语言。
FreeMarker对 AWT 有严重的依赖。这使得它无法与 Google App Engine 之类的东西一起使用。
我更喜欢使用StringTemplate来满足我所有的 Java 模板需求。它是唯一一个将逻辑与模板严格分离的基于 Java 的模板系统。
StringTemplate 是一个 java 模板引擎(带有用于 C#、Python、Ruby 和 Scala 的端口),用于生成源代码、网页、电子邮件或任何其他格式化的文本输出。StringTemplate 尤其擅长多目标代码生成器、多站点皮肤和国际化/本地化
它的显着特点是与其他引擎不同,它严格执行模型视图分离。严格的分离使网站和代码生成器更加灵活和可维护;它还可以很好地防御恶意模板作者。
由于您正在生成 XML
乍一看并不明显的另一个解决方案是使用 JAXB。我们这里有一个项目,需要我们生成 XML,我们为输出文件定义了非常好的 XSD 文件,构建对象并编组它们非常容易而且非常轻松。
您会发现与 Chameleon 最相似的 java 模板引擎是Thymeleaf。
基于客户端的模板有Distal。
还有Apache Velocity。虽然它不要求您的模板是有效的 XML。考虑到这个问题,这对你来说可能是一个交易破坏者。不过,您可能会通过扩展核心类来强制执行该规则。