有没有类似于Razor的模板语言用于Java Spring Web应用程序?

我爱上了 .NET MVC 3 中的剃须刀模板。Java有什么接近的东西吗?

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

<c:if test=${bla}>
   <span>my html</span>
</c:if>

而是做

@if(bla)
{
  <span>my html</span>
}

我假设一定有类似的


答案 1

我想介绍一下我的工作:Rythm模板引擎,一个轻量级和超快速的Java模板引擎,使用Razor般的语法。Rythm具有丰富的功能,并支持页面布局/继承,自定义标签(在模板或java类中),在开发模式下动态重新加载等等。基准测试显示Rythm比正常页面上的Velocity快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");

在 GAE 上托管了完整的功能演示http://play-rhythm-demo.appspot.com/

更新20130406

节奏小提琴网站现已上线,您可以使用它来学习Rythm语法。查看 http://fiddle.rythmengine.org

更新20130513

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

答案 2

据我所知,在那个Java世界中,没有一个看起来和行为都像Razor。

据我所知,Razor中的模板引擎不仅解析静态文本中的“占位符”,例如在Velocity或JSP中。#xxx${xxx}

相反,Razor 中的符号充当切换到宿主语言分析器(Razor 中的 VB 和 C#)的切换开关,识别紧跟在符号后面的元素的完整语法。这允许 Razor 识别传递给引擎的对象的名称以及语法结构,如 for 循环和条件。@@

这为 te Razor 模板打开了托管语言的全部功能,这在坏人手中可能是一件危险的事情......

世界上Java端的大多数模板引擎都认真地选择将业务逻辑与模板问题严格分开,因此对其模板“语言”中的循环或条件等动态功能的支持非常有限或根本没有支持,选择声明性样式而不是动态。