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

发布于 2024-12-01 12:48:08 字数 299 浏览 4 评论 0 原文

我很喜欢 .NET MVC 3 中的 razor 模板。有什么接近 java 的吗?

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

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

相反,

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

我假设必须有类似的东西

I'm in love with razor templates in .NET MVC 3. Is there anything close for java?

I'd be looking for something where I could avoid using JSTL tags and instead do something like this:

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

and instead do

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

I'm assuming there must be similar

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

可可 2024-12-08 12:48:08

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

API 很简单:

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

    字符串输出 = 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-rythm-demo.appspot.com/

更新20130406

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

更新 20130513

  • 软件包名称已更改从 com.greenlaw110.rythm 到
    org.rythmengine,maven组id相应更改
  • 查看新项目网站:http://rythmengine.org< /a>

I'd like to introduce my work: Rythm template engine, a lightweight and super fast template engine in Java using the Razor like syntax. Rythm has rich features and supports page layout/inheritance, customized tags (either in template or java class), dynamic reload at dev mode and much more. The benchmark shows Rythm is 2 to 3 times faster than Velocity on a normal page!

The API is simple:

  1. render with inline string:

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

  2. render with template file:

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

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

Updates 20120701

The latest version introduced a feature called "String Interpolation Mode", which enable you to do very lightweight string interpolation like follows:

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

A full feature demonstration is hosted on GAE: http://play-rythm-demo.appspot.com/

Updates 20130406

A rythm fiddle web site is online now, and you can use it to learn Rythm syntax. Check it out at http://fiddle.rythmengine.org

Updates 20130513

  • package name changed from com.greenlaw110.rythm to
    org.rythmengine, the maven group id changed accordingly
  • Checkout the new project website: http://rythmengine.org
古镇旧梦 2024-12-08 12:48:08

据我所知,在 Java 世界中,没有一个外观和行为与 Razor 非常相似。

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

相反,Razor 中的 @ 符号充当切换到托管语言解析器(Razor 中的 VB 和 C#)的切换开关,识别紧随 @ 元素的完整语法> 标志。这使得 Razor 能够识别传递给引擎的对象名称以及 for 循环和条件等语法结构。

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

Java 方面的大多数模板引擎都有意识地选择将业务逻辑与模板关注点严格分开因此,对其模板“语言”中的循环或条件等动态功能的支持非常有限或不支持,而是选择声明式风格而不是动态风格。

As far as I know, there is none that looks and behaves quite like Razor in that Java world.

From what I can understand, the templating engine in Razor does not only parse the "placeholders" in the static text, like #xxx in Velocity or ${xxx} in JSP.

Instead the @ symbol in Razor acts as a toggle for switching to the hosting language parser (VB and C# in case of Razor), recognizing full syntax of the element immediately following the @ sign. This allowes Razor to recognize both names of objects passed to the engine as well as syntactic structures like for loops and conditionals.

This opens up the full power of the hosting language to te Razor templates, which can be a dangerous thing in wrong hands...

Most of the templating engines in the Java side of the world have conciously chosen to strictly separate business logic from templating concerns and thus have very limited or no support for dynamic features like looping or conditionals in their template "languages", opting for declarative style over dynamic.

紫罗兰の梦幻 2024-12-08 12:48:08

Spring 支持多种模板语言:

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

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

如果您真的想要疯狂,这里有一个页面 以及大约无数其他模板引擎。

Spring supports a number of templating languages:

For more reading on how to integrate with Spring, see this page.

Additionally, there's StringTemplate, which while not referenced in the official Spring documentation, can be used as a Spring template engine.

And if you really want to go wild, here's a page with about a bazillion other template engines.

夏见 2024-12-08 12:48:08

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

例子:

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

Take a look at twirl, the Play framework template engine separated from the framework.

Example:

@if(items.isEmpty) {
  <h1>Nothing to display</h1>
} else {
  <h1>@items.size items!</h1>
}
执着的年纪 2024-12-08 12:48:08

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

Try having a look at velocity (http://velocity.apache.org)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文