是否存在类似于Razor for Java Spring Web应用程序的模板语言?

Tim*_*m H 22 java asp.net-mvc template-engine templating spring-mvc

我爱上了.NET MVC 3中的剃刀模板.对于java有什么关系吗?

我正在寻找一些我可以避免使用JSTL标签的东西,而是做这样的事情:

<c:if test=${bla}>
   <span>my html</span>
</c:if>
Run Code Online (Sandbox Code Playgroud)

而是做

@if(bla)
{
  <span>my html</span>
}
Run Code Online (Sandbox Code Playgroud)

我假设必须有相似之处

Gel*_*Luo 28

我想介绍我的工作:Rythm模板引擎,一个使用Razor语法的Java中的轻量级和超快速模板引擎.Rythm具有丰富的功能并支持页面布局/继承,自定义标签(在模板或java类中),在开发模式下的动态重新加载等等.该指标显示的节奏是2至3倍的速度比速度正常的页面上!

API很简单:

  1. 使用内联字符串进行渲染:

    String output = Rythm.render("@args String who;hello @who!", "world");

  2. 使用模板文件渲染:

    String output = Rythm.render("hello.txt", "world");

Rythm简介:http://software-lgl.blogspot.com.au/2012/03/rythm-easy-to-use-high-performance-java.html

更新20120701

最新版本引入了一个名为" 字符串插值模式 "的功能,它使您能够进行非常轻量级的字符串插值,如下所示:

String result = Rythm.render("hello @who!", "world");
Run Code Online (Sandbox Code Playgroud)

GAE上一个完整的功能演示:http://play-rythm-demo.appspot.com/

更新20130406

一个节奏小提琴网站现在在线,你可以用它来学习Rythm语法.请访问http://fiddle.rythmengine.org查看

更新20130513

  • 包名称从更改com.greenlaw110.rythmorg.rythmengine,maven组ID已相应更改
  • 查看新项目网站:http://rythmengine.org

  • 我很欣赏你的观察。原因有几个: 1. Rythm 相当成熟和稳定,我仍在许多项目中使用它并取得了巨大成功;2. 自 2014 年以来,我的重点已转移到 http://github.com/actframework/actframework,是的,Rythm 是该 MVC 堆栈中的默认模板解决方案;3. 我需要维护者加入我的 Rythm 和其他开源项目...... (2认同)

Rol*_*epp 7

据我所知,在Java世界中没有任何外观和行为与Razor相似.

根据我的理解,Razor中的模板引擎不仅可以解析静态文本中的"占位符",例如#xxx在Velocity或${xxx}JSP中.

相反@,Razor中的符号充当切换到托管语言解析器的切换(在Razor的情况下为VB和C#),识别紧跟在@符号后面的元素的完整语法.这允许Razor识别传递给引擎的对象的名称以及诸如for循环和条件的句法结构.

这开启了托管语言的全部功能,以便用于剃刀模板,这在错误的手中可能是危险的......

世界上Java方面的大多数模板引擎都选择严格地将业务逻辑与模板问题分开,因此对模板"语言"中的循环或条件等动态特性的支持非常有限或不支持,选择声明式样式动态.


atr*_*ain 5

Spring 支持多种模板语言:

有关如何与 Spring 集成的更多信息,请参阅此页面

此外,还有StringTemplate,虽然在官方 Spring 文档中没有引用,但可以用作Spring 模板引擎。

如果你真的想疯狂,这里有一个页面,里面有很多其他模板引擎。


dea*_*mon 5

看看twirl,与框架分离的 Play 框架模板引擎。

例子:

@if(items.isEmpty) {
  <h1>Nothing to display</h1>
} else {
  <h1>@items.size items!</h1>
}
Run Code Online (Sandbox Code Playgroud)