J2HTML Crea código HTML desde Java
La librería J2HTML nos permite generar código HTML utilizando el lenguaje Java, se utiliza de una manera muy sencilla y similar a HTML, antes de empezar solo debemos agregar la dependencia y luego importar TagCreator
, veamos una demostración.
Agregar la dependencia Maven:
<dependencies>
<dependency>
<groupId>com.j2html</groupId>
<artifactId>j2html</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
Cómo lo hemos mencionado anteriormente, requerimos importar los siguiente:
import static j2html.TagCreator.*;
Luego podremos usar los correspondientes métodos estáticos, cada uno de ellos lleva el mismo nombre que la etiqueta HTML correspondiente, usando los distintos métodos withXXX(...)
podemos establecer los atributos de la etiqueta, XXX corresponde al nombre del atributo, ejemplo:
StringBuilder html = new StringBuilder();
html(
header(
title("Tutor de programacion"),
link().withRel("stylesheet").withHref("/css/style.css")
),
body(
h1("J2HTML Tutorial").withClass("title"),
img().withSrc("/img/imagen.jpg")
)
).render(html);
El resultado es el siguiente:
<html>
<header>
<title>Tutor de programacion</title>
<link rel="stylesheet" href="/css/style.css">
</header>
<body>
<h1 class="title">J2HTML Tutorial</h1>
<img src="/img/imagen.jpg">
</body>
</html>
Integrar J2HTML a un Servlet
No es nada difícil integrar esta librería a un Servlet Java, solo debemos saber que el método render()
es el encargado de generar el HTML de salida, con él podemos obtener el String
resultante o podemos indicar un objeto que implemente Appendable
en donde se escribirá la salida, el objeto HttpResponse
posee el método getWriter()
que nos devolverá un PrintWriter
que implementa la interface antes mencionada.
@WebServlet("/")
public class PrimerServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
html(
header(
title("Tutor de programacion")
),
body(
h1("J2HTML en Servlet Tutorial"),
p("Contenido generado dinamicamente con j2html, creado en 2017"),
br(),
a("Tutor de programación").withHref("http://acodigo.blogspot.com")
)
).render(response.getWriter());
}
}
Al correr nuestro Servlet, obtendremos el siguiente resultado:
Esta biblioteca nos facilita el trabajo con colecciones, disponemos de los métodos each()
y filter()
que nos permiten iterar a través de un conjunto de datos, por ejemplo:
each(Tutoriales.getAll(), tutorial
-> div(
a(tutorial.getNombre()).withHref(tutorial.getEnlace()),
span(" (" + tutorial.getCantidad() + ")")
)
)
Si desearemos filtrar los tutoriales con cantidades menor a 20 lo haríamos del siguiente modo:
each(filter(Tutoriales.getAll(), t -> t.getCantidad() > 20), tutorial
-> div(
a(tutorial.getNombre()).withHref(tutorial.getEnlace()),
span(" (" + tutorial.getCantidad() + ")")
)
)
Aun existen muchas más posibilidades, para verlas puedes visitar la página oficial.
Descargar el ejemplo: j2html-servlet.zip
Comentarios
Publicar un comentario