Existe-t-il un langage de modèle similaire à Razor pour les applications Web Java Spring?


Je suis amoureux des modèles razor dans.NET MVC 3. Y a-t-il quelque chose de proche pour java?

Je chercherais quelque chose où je pourrais éviter d'utiliser des balises JSTL et plutôt faire quelque chose comme ceci:

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

Et faites plutôt

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

Je suppose qu'il doit y avoir similaire

Author: tereško, 2011-08-25

5 answers

Je voudrais présenter mon travail: Moteur de template Rythm , un moteur de template léger et super rapide en Java utilisant le Rasoir comme la syntaxe. Rythm a des fonctionnalités riches et prend en charge la mise en page/l'héritage, les balises personnalisées (en modèle ou en classe java), le rechargement dynamique en mode dev et bien plus encore. Le test montre le Rythme est de 2 à 3 fois plus rapide que Vitesse sur une page normale!

L'API est simple:

  1. Rendu avec une chaîne en ligne:

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

  2. Rendu avec le fichier modèle:

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

Une brève introduction au rythme: http://software-lgl.blogspot.com.au/2012/03/rythm-easy-to-use-high-performance-java.html

Les Mises à jour 20120701

La dernière version a introduit une fonctionnalité appelée " String Interpolation Mode ", qui vous permet de faire une interpolation de chaîne très légère comme suit:

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

Un démonstration complète de fonctionnalités est hébergé sur GAE: http://play-rythm-demo.appspot.com/

Les Mises à jour 20130406

Un site web de rythm fiddle est maintenant en ligne, et vous pouvez l'utiliser pour apprendre la syntaxe de Rythm. Découvrez-le à http://fiddle.rythmengine.org

Les Mises à jour 20130513

  • le nom du paquet est passé de com.greenlaw110.rythm à org.rythmengine , l'id du groupe maven a changé en conséquence
  • Consultez le nouveau site web du projet: http://rythmengine.org
 29
Author: Gelin Luo, 2013-05-13 06:15:18

Pour autant que je sache, il n'y en a pas qui ressemble et se comporte tout à fait comme Razor dans ce monde Java.

D'après ce que je peux comprendre, le moteur de création de modèles dans Razor n'analyse pas seulement les "espaces réservés" dans le texte statique, comme #xxx dans Velocity ou ${xxx} dans JSP.

Au lieu de cela, le symbole @ dans Razor agit comme une bascule pour passer à l'analyseur de langage d'hébergement (VB et C# dans le cas de Razor), reconnaissant la syntaxe complète de l'élément immédiatement après le signe @. Cette autorises Razor pour reconnaître les deux noms d'objets passés au moteur ainsi que les structures syntaxiques comme pour les boucles et les conditionnels.

Cela ouvre toute la puissance du langage d'hébergement aux modèles te Razor, ce qui peut être une chose dangereuse entre de mauvaises mains...

La plupart des moteurs de création de modèles dans le monde Java ont délibérément choisi de séparer strictement la logique métier des préoccupations de création de modèles et ont donc un support très limité ou nul pour les fonctionnalités dynamiques telles que le bouclage ou conditionnels dans leur modèle "langues", en optant pour le style déclaratif plutôt que dynamique.

 8
Author: Roland Tepp, 2011-11-30 09:39:19

Spring prend en charge un certain nombre de langages de création de modèles:

Pour en savoir plus sur l'intégration avec Spring, consultez cette page.

De plus, il y a StringTemplate , qui bien que non référencé dans le printemps officiel documentation, peut être utilisé comme un Ressort moteur de template.

Et {si vous[29]}vraiment voulez aller sauvage, voici une page, avec environ un bazillion autres moteurs de template.

 5
Author: atrain, 2011-08-25 22:09:40

Jetez un oeil à twirl , le moteur de template Play framework séparé du framework.

Exemple:

@if(items.isEmpty) {
  <h1>Nothing to display</h1>
} else {
  <h1>@items.size items!</h1>
}
 5
Author: deamon, 2013-06-27 19:23:26

Essayez de regarder velocity (http://velocity.apache.org)

 2
Author: vickirk, 2011-08-25 15:00:07