32 votes

Bibliothèque Java HTML Builder (anti-modèle) ?

Je suis toujours à la recherche d'une bibliothèque Java moderne permettant de créer facilement des extraits (X)HTML valides.

Oui, vous pouvez utiliser un langage de création de modèles, mais il arrive que vous ne souhaitiez pas le faire parce que Java présente certains avantages par rapport à votre langage de création de modèles préféré.

J'ai vu beaucoup de constructeurs HTML internes dans de nombreux projets, mais il n'y a pas de constructeur HTML commun que je puisse trouver.

Quelqu'un en connaît-il un ?

L'idéal serait qu'il tire parti du système de types de Java 5/6/7 (génériques) et qu'il prenne en charge le style fluide. Ou quelque chose comme le style fluide, c'est-à-dire le chaînage à la JQuery, ou une machine d'état utilisée dans les bibliothèques de simulation comme JMock (pédantesquement parlant, un Monad).

Un exemple approximatif de constructeur 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/

J'ai fini par écrire le mien : Langage anti-modèle Java (JATL)

0 votes

Une autre option est d'utiliser le plugin Fluent de JAXB.

34voto

Adam Gent Points 15055

J'ai fini par écrire ma propre bibliothèque appelée Langage anti-modèle Java (JATL)

0 votes

Ça a l'air bien, vous le mettez toujours à jour ?

0 votes

Ouaip. Je dois ajouter HTML 5 bientôt. Je l'ajouterai probablement d'ici quelques semaines. Il est aussi maintenant dans le repo maven public.

2 votes

Excellent travail ! Ce serait beaucoup mieux si les éléments internes pouvaient aller à l'intérieur des constructeurs comme : body(h1(), div(table(...)))

3voto

serg10 Points 10157

Avez-vous essayé le Ensemble de construction d'éléments de Jakarta (ECS) projet ?

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

0 votes

C'est définitivement un pas dans la bonne direction (+1)

1 votes

Je pense que nous avons un gagnant. Quel horrible nom de projet non convivial pour le référencement :) Vous avez raison, ce n'est probablement pas vraiment fluide car cela impliquerait une machine à états. Si quelque chose est en fait plus comme un Monad. Pensez à JQuery.

0 votes

Il me semble toujours aussi maladroit et ne prend pas en charge le XHTML.

3voto

Sean Patrick Floyd Points 109428

Votre meilleure option est probablement d'utiliser une bibliothèque XML et de rendre la sortie en HTML.

I.E. Dom4J définit un HtmlWriter pour la sortie XML spécifique au HTML.

Mais vous devrez toujours créer votre propre API pour créer le document.

0 votes

La probabilité ennuyeuse avec Dom4J est le manque de support des génériques. Par exemple, node.elements() retourne une liste<?> et non une liste<Element>. Mais c'est ma bibliothèque XML préférée pour Java.

0 votes

Je préférerais imprimer le HTML directement et échapper toutes les variables à la main, plutôt que d'utiliser une bibliothèque XML. Pour faire avec le HTML, la bibliothèque XML peut rendre le code laid et extrêmement long.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X