J2htmx is a set of extentions for j2html to make it work better with htmx attributes and hyperscript
Import the latest version of the library from maven central
<dependency>
<groupId>me.kisoft</groupId>
<artifactId>j2htmx</artifactId>
<version>2.0.0</version>
</dependency>
Afterwards, either import the htmx scripts from CDN yourself or use the withHtmxImports
function on a ContainerTag
, which
should ideally be your head
tag
html(
withHtmxImport(
head()
),
body(/* stuff goes here */)
)
afterwards, you can use any of the htmx attributes using the hx
static import, such as
div(
div().withId("my-id"),
button().withText("Click for a new Joke")
.attr(hx.get("/my-path")
.attr(hx.target("#my-id")
)
)
All htmx attributes are supported. You can find them all here
There is a convinience method, for generating attributes, allowing you to generate attributes as a functional interface or class. This allows you to create re-usable attribute generators to use across components.
div(
div().withId("my-id"),
button().withText("Click for a new Joke")
.attr(hx.get("/my-path")
.attr(hx.target(()->"#my-id")
)
)
While they make a small difference in most cases, this allows us to more easily use random Ids and reusable attributes.
You can use the withHyperscriptImport
function to import hyperscript as well
html(
withHyperscriptImport(
withHtmxImport(
head()
)
),
body(/* stuff goes here */)
)
There is a hx.hyperscript
method that you can use to add hyperscript to any
tag. you can find more about hyperscript here