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

时间:2011-08-25 14:53:38

标签: java asp.net-mvc spring-mvc template-engine templating

我爱上了.NET MVC 3中的剃刀模板。是否有接近java的东西?

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

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

而是做

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

我假设必须有类似的

5 个答案:

答案 0 :(得分:26)

我想介绍我的工作:Rythm template engine,一个使用Razor类似语法的Java中的轻量级和超快速模板引擎。 Rythm具有丰富的功能,支持页面布局/继承,自定义标签(在模板或java类中),在开发模式下的动态重新加载等等。 benchmark显示Rythm比普通页面上的Velocity快2到3倍!

API很简单:

  1. 使用内嵌字符串渲染:

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

  2. 使用模板文件进行渲染:

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

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

    更新20120701

    最新版本引入了一个名为“String Interpolation Mode”的功能,它可以让您进行非常轻量级的字符串插值,如下所示:

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

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

    更新20130406

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

    更新20130513

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

答案 1 :(得分:7)

据我所知,在Java世界中没有任何外观和行为与Razor完全相同。

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

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

这为托拉斯模板开辟了托管语言的全部功能,这在错误的手中可能是危险的......

世界上Java方面的大多数模板引擎都选择严格地将业务逻辑与模板问题分开,因此对模板“语言”中的循环或条件等动态功能的支持非常有限或不支持,选择动态的陈述式风格。

答案 2 :(得分:4)

Spring支持许多模板语言:

有关如何与Spring集成的更多信息,请参阅this page

此外,还有StringTemplate,虽然在官方的Spring文档中没有引用,can be used是一个Spring模板引擎。

如果你真的想要疯狂,here's a page还有大量其他模板引擎。

答案 3 :(得分:3)

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

示例:

@if(items.isEmpty) {
  <h1>Nothing to display</h1>
} else {
  <h1>@items.size items!</h1>
}

答案 4 :(得分:2)

试试看速度(http://velocity.apache.org)