2010-08-27 3 views
31

Je suis toujours à la recherche d'une bibliothèque Java moderne qui facilite la création de snippets (X) HTML valides.Bibliothèque Java HTML Builder (anti-template)?

Oui, vous pouvez utiliser un langage de modèle, mais il y a des moments où vous ne voulez pas faire cela, car Java présente certains avantages par rapport à l'insertion de votre langage de modèle préféré.

J'ai vu beaucoup de constructeurs HTML internes dans de nombreux projets, mais je ne trouve pas Commons-HTML Builder.

Quelqu'un en connaît-il un?

L'idéal serait de tirer parti du système de type Java 5/6/7 (génériques) et de prendre en charge le style Fluent. Ou quelque chose comme le style fluent, c'est-à-dire le chaînage de style JQuery, ou une machine d'état utilisée dans des bibliothèques moqueuses comme JMock (pedantically parlant une Monade).

Un exemple de constructeur rugueux pourrait être:

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

Un autre exemple: http://codemonkeyism.com/the-best-markup-builder-i-could-build-in-java/

Je fini par écrire mon propre: Java Anti-template Language (JATL)

+0

Une autre option consiste à utiliser Fluent Plugin –

Répondre

33

Je fini par écrire ma propre bibliothèque appelée Java Anti-template Language (JATL)

+0

Ça a l'air bien, êtes-vous toujours en train de le mettre à jour? –

+0

Oui. J'ai besoin d'ajouter HTML 5 bientôt. Ajoutez-le probablement dans quelques semaines. C'est aussi maintenant dans le repo maven publique. –

+2

Excellent travail! Il serait beaucoup mieux si les éléments internes pouvaient aller dans les constructeurs comme: 'body (h1(), div (table (...)))' –

3

Avez-vous essayé le projet Jakarta Element Construction Set (ECS)?

Ce n'est pas vraiment une API fluide - cela me rappelle plus StringBuilder que Mockito ... Mais fonctionnellement, je pense que c'est ce que vous recherchez.

+0

de JAXB Ceci est certainement un pas dans la bonne direction (+1) –

+1

Je pense que nous avons un gagnant. Quel horrible nom de projet SEO non-amical :) Votre droit n'est probablement pas très fluide car il impliquerait une machine d'état. Si quelque chose est en fait plus comme une Monade. Pensez à JQuery. –

+0

Il me semble encore maladroit et ne supporte pas XHTML. –

3

Votre meilleur pari est probablement d'utiliser une bibliothèque XML et de rendre la sortie au format HTML.

I.E. Dom4J définit une classe HtmlWriter pour une sortie XML spécifique à HTML.

Mais vous devrez tout de même créer votre propre API pour créer le document.

+0

L'ennuyeux probablem avec Dom4J son manque de support de génériques. ie node.elements() renvoie une liste pas Liste Mais est ma bibliothèque XML préférée pour Java –

+0

Je préférerais imprimer HTML directement et échapper toutes les variables à la main, au lieu de toute bibliothèque XML. Pour faire du HTML, la bibliothèque XML peut rendre le code laid et extrême. –