2010-08-27 3 views
31

Ich bin immer auf der Suche nach einer modernen Java-Bibliothek, die das Erstellen valider (X) HTML-Snippets einfach macht.Java HTML Builder (Anti-Vorlage) -Bibliothek?

Ja, Sie könnten eine Templating-Sprache verwenden, aber es gibt Situationen, in denen Sie dies nicht tun möchten, da Java einige Vorteile gegenüber dem Einfügen Ihrer bevorzugten Templating-Sprache hat.

Ich habe viele interne HTML-Builder in vielen Projekten gesehen, aber es gibt keinen Commons-HTML-Builder, den ich finden kann.

Kennt jemand von einem?

Es wäre ideal, wenn es das Java 5/6/7 Typsystem (Generika) ausnutzt und Fluent Style unterstützt. Oder etwas wie fließenden Stil, dh JQuery Stil Verkettung, oder eine State Machine in Spott Bibliotheken wie JMock (pedantisch gesprochen eine Monade).

könnte ein grobes Builder Beispiel sein:

new Html().title("stuff").body().in().div().in().h1("Hello World").hr(); 

Ein weiteres Beispiel: http://codemonkeyism.com/the-best-markup-builder-i-could-build-in-java/

ich meine eigene landete schreiben: Java Anti-template Language (JATL)

+0

Eine weitere Option ist die Verwendung JAXB ist Fluent Plugin –

Antwort

33

landete ich meine eigene Bibliothek Java Anti-template Language (JATL)

+0

Sieht gut aus, aktualisieren Sie es noch? –

+0

Ja. Ich muss bald HTML 5 hinzufügen. Wahrscheinlich fügen Sie es in ein paar Wochen hinzu. Es ist jetzt auch im öffentlichen Maven Repo. –

+2

Gute Arbeit! Es wäre viel besser, wenn die inneren Elemente innerhalb der Konstruktoren wie folgt gehen würden: 'body (h1(), div (table (...)))' –

3

Haben Sie versucht, das Jakarta Element Construction Set (ECS) Projekt?

Es ist nicht wirklich eine flüssige API - erinnert mich mehr an StringBuilder als Mockito ... Aber funktional denke ich, dass es das ist, wonach Sie suchen.

+0

Dies ist definitiv ein Schritt in die richtige Richtung (+1) –

+1

Ich denke, wir haben einen Gewinner genannt zu schreiben. Was für ein schrecklicher nicht-freundlich SEO Projektname :) Ihr Recht ist es wahrscheinlich nicht wirklich fließend, da es eine Zustandsmaschine beinhalten würde. Wenn überhaupt, ist es eher wie eine Monade. Denk an JQuery. –

+0

Es wirkt immer noch klobig und unterstützt XHTML nicht. –

3

Ihre beste Wette ist wahrscheinlich, eine XML-Bibliothek zu verwenden und die Ausgabe als HTML zu rendern.

I.E. Dom4J definiert eine HtmlWriter Klasse für die HTML-spezifische XML-Ausgabe.

Aber Sie müssten immer noch Ihre eigene API erstellen, um das Dokument zu erstellen.

+0

Das lästige wahrscheinliche mit Dom4J ist die fehlende Unterstützung von Generika. dh node.elements() gibt eine Liste nicht zurück Liste Aber ist meine Lieblings-XML-Bibliothek für Java –

+0

Ich würde lieber direkt HTML drucken und alle Variablen von Hand statt jeder XML-Bibliothek zu entkommen. Um mit HTML zu arbeiten, kann XML-Bibliothek Code hässlich und extrem lang machen. –