Meilleur générateur Html en java [fermé]


Je veux obtenir la sortie ci-dessous.

<html>
<head>
</head>
<body>
<table>
<tbody>
<thead>
Blah Blah table Header--Constant Part
</thead>
<tr>
some text-constant part
</tr>
<!---Main Customization Part-->
for(i=0;i<some value;i++)
{
<tr>
    for(j=0;j<another value;j++)
    {
        if(some condition)
        {
            <td class=another varibale>some text</td>
        }
        else
        {
            <td class=yet another varibale>some text</td>
        }
    }
</tr>
}
</body>
</html>

Comme vous pouvez le voir, c'est un mélange de html et il générera le reste à partir de la logique java. Maintenant, voici ma question-comment puis-je implémenter en java autonome(c'est-à-dire pas jsp).Je sais que je peux écrire cela dans un fichier normal.Mais d'une manière ou d'une autre je pense que c'est laid solution.Is il y a un moyen de le faire d'une manière plus agréable? Fondamentalement, je cherche un bon générateur HTML pour java. Déjà vérifié-Freemarker. De plus,je suis ouvert à implémenter dans n'importe quelle langue, Car java est mon langue préférée,donc je suis en préférant il.

Author: Monojit, 2012-03-28

7 answers

Gagawa "permet aux développeurs de créer facilement et dynamiquement du HTML bien formé dans des applications Web ou non Web".

Il nécessite l'utilisation d'un jar et le code source est disponible gratuitement.

Un exemple...

Div div = new Div();
div.setId("mydiv").setCSSClass("myclass");

A link = new A();
link.setHref("http://www.example.com").setTarget("_blank");

div.appendChild( link );

Img image = new Img( "some alt", "some-image.png" );
image.setCSSClass( "frame" ).setId( "myimageid" );
link.appendChild( image );

System.out.print( div.write() );

Cela produit le code HTML suivant:

<div id="mydiv" class="myclass">
  <a href="http://www.example.com" target="_blank">
   <img alt="some alt" src="some-image.png" class="frame" id="myimageid">
  </a>
</div>
 16
Author: Zack Macomber, 2012-03-28 15:42:11

Si vous voulez rester avec java pur, vous pouvez utiliser des modèles.

Par exemple:

... constant html ...
</tr>
{variablePart}
</tr>
... constant html ...

Sauvegarder quelque part (disons, dans un .properties fichier) et de le charger dans un String dans votre application. Ensuite, ayez votre code de construction habituel...

StringBuilder builder = new StringBuilder();
for(j=0;j<another value;j++)
{
    if(some condition)
    {
        builder.append("<td class=another varibale>some text</td>");
    }
    else
    {
        builder.append("<td class=yet another varibale>some text</td>");
    }
}

Et enfin obtenir votre HTML:

String finalHTML = templateHTML.replace("{variablePart}", builder.toString());

Ce n'est peut-être pas parfait, mais c'est un peu mieux que ce que vous avez.

 5
Author: Marcelo, 2012-03-28 14:45:24

, Vous pouvez envisager d'utiliser vitesse modèle de apache. Velocity n'est pas nécessaire pour s'exécuter dans le serveur Web ou d'application

Comment fonctionne la vélocité

Guide de l'utilisateur

 2
Author: Pau Kiat Wee, 2012-03-28 14:56:45

Probablement ce que vous voulez est un moteur de template. De nombreuses existent, mais les deux grands garçons sont Freemarker et Apache Velocity. Les deux sont heureux dans une application autonome. Vous avez mentionné Freemarker dans votre message, mais il semble que vous l'ayez rejeté. Pourrais-je vous demander pourquoi?

Si vous n'êtes pas après un moteur de modèle, vous pouvez construire le DOM dans le code en utilisant peut-être javax.swing.texte.Document et javax.swing.texte.HTML.HTMLEditorKit mais je voudrais recomemend contre elle.

 2
Author: Michael Lloyd Lee mlk, 2012-03-28 15:00:28

Chunk est mon moteur de modèle gratuit et open-source pour Java. Chunk est comme Freemarker ou Velocity, mais avec une syntaxe plus intuitive.

Les balises "loop" et "if" imbriquées de Chunk rendent ce genre de chose très facile:

Mon_template.chtml (place dans le classpath, par exemple, dans src/thèmes/my_template.chtml)

<html>
 <head>
 </head>
 <body>
 <table>
 <tbody>
 <thead>
 Blah Blah table Header--Constant Part
 </thead>
 <tr>
 some text-constant part
 </tr>
 {!---Main Customization Part--}
 {% loop in $list as $row %}
 <tr>
  {% loop in $row as $cell %}
   {% if ($cell.color == "blue") %}
        <td class="{$class_a}">{$cell.text}</td>
   {% else %}
        <td class="{$class_b}">{$cell.text}</td>
   {% endif %}
  {% endloop %}
 </tr>
 {% endloop %}
 </tbody>
 </table>
 </body>
</html>

Exemple de java pour travailler avec ce modèle:

 import com.x5.template.Theme;
 import com.x5.template.Chunk;

 ...

 Theme theme = new Theme();
 Chunk html = theme.makeChunk("my_template");

 html.set("class_a", "blue_cell");
 html.set("class_b", "plain_cell");

 String row1 = "[[color,text],[blue,moe],[red,curly],[orange,larry]]";
 String row2 = "[[color,text],[red,hat],[black,dog],[blue,bottle]]";

 String[] list = new String[]{row1,row2};

 html.set("list", list);

 out = getOutputWriter();
 html.render( out );  // or System.out.print( html.toString() )

 out.flush();
 out.close();

J'ai utilisé des tables en ligne (un format pratique de bloc) pour créer des données conviviales en boucle mais vous pouvez utiliser tableaux ou listes de tout objet qui implémente com.x5.util.DataCapsule et Chunk copient les données directement hors de vos objets avant de rendre le modèle.

Sortie finale:

<html>
 <head>
 </head>
 <body>
 <table>
 <tbody>
 <thead>
 Blah Blah table Header--Constant Part
 </thead>
 <tr>
 some text-constant part
 </tr>
 <tr>
        <td class="blue_cell">moe</td>
        <td class="plain_cell">curly</td>
        <td class="plain_cell">larry</td>
 </tr>
 <tr>
        <td class="plain_cell">hat</td>
        <td class="plain_cell">dog</td>
        <td class="blue_cell">bottle</td>
 </tr>
 </tbody>
 </table>
 </body>
</html>
 1
Author: Tom McClure, 2015-01-03 17:04:20

Rythm est un modèle Java pur haute performance (2 à 3 fois plus rapide que velocity) qui utilise Razor {[3] } comme la syntaxe:

@args String who
<p>
@if ("world".equals(who)) {
  hello @who
} else {
  bye @who
}
</p>

Il prend en charge le modèle de mise en page défini par l'utilisateur, la balise définie par l'utilisateur et bien plus encore. Découvrez la démo complète de la fonctionnalité sur http://play-rythm-demo.appspot.com/

 0
Author: Gelin Luo, 2012-06-30 10:57:53

Vous devez également gérer les actions, Css défini dans le code java est difficile à tester et à modifier, pourquoi ne pas utiliser wicket.apache.org ?

 0
Author: Ali.Mojtehedy, 2015-05-10 08:28:17