If you’re a Java lover and want to make UI interface in java instead of using HTML5. Then j2HTML is a java library of Java to HTML generator. You can enjoy typesafe HTML generation.
How to add j2html in project
Add the maven dependency
<dependency> <groupId>com.j2html</groupId> <artifactId>j2html</artifactId> <version>0.88</version> </dependency>
Import TagCreator and start building HTML
import static j2html.TagCreator.*; public class Main { public static void main(String[] args) { body().with( h1("Heading!").withClass("example"), img().withSrc("img/hello.png") ).render(); } }
The above Java will result in the following HTML:
<body> <h1 class="example">Heading!</h1> <img src="img/hello.png"> </body>
Basic example
Creating a basic webpage in j2html is pretty similar to HTML. This Java code:
html().with( head().with( title("Title"), link().withRel("stylesheet").withHref("/css/main.css") ), body().with( main().with( h1("Heading!") ) ) )
Becomes this HTML:
<html> <head> <title>Title</title> <link rel="stylesheet" href="/css/main.css"> </head> <body> <main> <h1>Heading!</h1> </main> </body> <html>
It’s literally impossible to forget to close a div, mistype an attribute name, or forget an attribute quote! Remember to include the Java wrapping code though, j2html is not a template language, all files are .java.
Partials
You can create partials for elements you use a lot:
public static Tag enterPasswordInput(String placeholder) { return passwordInput("enterPassword", placeholder); } public static Tag choosePasswordInput(String placeholder) { return passwordInput("choosePassword", placeholder); } public static Tag repeatPasswordInput(String placeholder) { return passwordInput("repeatPassword", placeholder); } public static Tag passwordInput(String identifier, String placeholder) { return input() .withType("password") .withId(identifier) .withName(identifier) .withPlaceholder(placeholder) .isRequired(); } public static Tag emailInput(String placeholder) { return input() .withType("email") .withId("email") .withName("email") .withPlaceholder(placeholder) .isRequired(); } public static Tag submitButton(String text) { return button().withType("submit").withText(text); }
The equivalent HTML would be:
<input type="password" id="enterPassword" name="enterPassword" placeholder="Enter password" required > <input type="password" id="choosePassword" name="choosePassword" placeholder="Choose password" required > <input type="password" id="repeatPassword" name="repeatPassword" placeholder="Repeat password" required > <input type="email" id="email" name="email" placeholder="Email" required > <button type="submit">Text</button>
For more example you can see above given button.
Hope you like this tutorial please comment below your thoughts.
Thanks, great article.