我爱上了.NET MVC 3中的剃刀模板。是否有接近java的东西?
我正在寻找可以避免使用JSTL标签的东西,而是做类似的事情:
<c:if test=${bla}>
<span>my html</span>
</c:if>
而是做
@if(bla)
{
<span>my html</span>
}
我假设必须有类似的
答案 0 :(得分:26)
我想介绍我的工作:Rythm template engine,一个使用Razor类似语法的Java中的轻量级和超快速模板引擎。 Rythm具有丰富的功能,支持页面布局/继承,自定义标签(在模板或java类中),在开发模式下的动态重新加载等等。 benchmark显示Rythm比普通页面上的Velocity快2到3倍!
API很简单:
使用内嵌字符串渲染:
String output = Rythm.render("@args String who;hello @who!", "world");
使用模板文件进行渲染:
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 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已相应更改答案 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)