Java · Spring · Thymeleaf · Htmx
Production-ready Spring Boot, crafted carefully.
I'm Wim Deblauwe, a software developer specialized in Java and Spring. I write books, maintain open-source projects like error-handling-spring-boot-starter, and publish practical, battle-tested articles here.
just start typing — try thymeleaf, testcontainers or htmx
Taming Thymeleaf
Server-side rendering with Spring Boot, step by step.
Modern frontends with htmx
Hypermedia-driven UIs with Spring Boot & Thymeleaf.
Recent posts
showing 10 of 126- Oct 19, 2023 Taming Thymeleaf update for Thymeleaf 3.1.2 Thymeleaf 3.1.2 was released recently and is inluded in Spring Boot 3.0.10 and 3.1.3. For security reasons, it is no longer allowed for a Thymeleaf template to directly access org.springframework.web.servlet.support.ServletUriComponentsBuilder. This was used in my Taming Thymeleaf book to build a generic fragment that can be used for pagination controls. If you still use it, you get this exception while running the application: org.springframework.expression.EvaluationException: Access is forbidden for type 'org.springframework.web.servlet.support.ServletUriComponentsBuilder' in this expression context.
- Mar 31, 2023 Taming Thymeleaf update for Spring Boot 3 My book Taming Thymeleaf has just been updated on leanpub for Spring Boot 3. This blog post will walk you through the most important changes if you want to upgrade to Spring Boot 3 from Spring Boot 2 if you used the previous version of the book.
- Feb 21, 2023 Toasts notifications in Thymeleaf with Shoelace and htmx - part 2 Yesterday, I shared how to combine Thymeleaf, Shoelace and htmx to show toast notifications in your web application. This worked pretty well and only needed a little JavaScript, but we can even further reduce the JavaScript used further and make them even more useful as the same time!
- Feb 20, 2023 Toasts notifications in Thymeleaf with Shoelace and htmx I recently played around with Shoelace, a library of web components. The nice thing about web components is that they are framework agnostic, so we can use them with Thymeleaf as well. This blog post will show how to use the Alert Toast component to show a confirmation or an error to the user. See also part 2 for a similar demo where the HTML of the notifications is generated in Thymeleaf instead of in JavaScript.
- Jan 24, 2023 Using Google login with Spring Boot 3 and Thymeleaf Building a complete user management system yourself is quite some work. However, you can very easily allow users to use social login with Google for example and avoid having to do all that work yourself. This blog post will show how to quickly setup a Spring Boot with Thymeleaf project and secure it using Google login.
- Dec 11, 2022 Release 1.0.0 and 2.0.0 of htmx-spring-boot-thymeleaf I realized I have not written about the official releases I did for htmx-spring-boot-thymeleaf on this blog, so time to right this wrong now.
- Dec 1, 2022 The error-handling-spring-boot-starter library vs Spring 6 ProblemDetail I created the error-handling-spring-boot-starter library for Spring Boot because I was unhappy with the default response that Spring Boot 2 provides out-of-the-box. With Spring Boot 3, there is now support for ProblemDetail and we can have a look on how that changes things.
- Nov 25, 2022 Started my YouTube channel I started my YouTube channel this week. It was quite something to come to this result, speaking to a camera is quite scary at first, but I think I got a nice result in the end 🙂
- Oct 4, 2022 Htmx authentication error handling Using htmx is a great way to make your Spring Boot with Thymeleaf web application dynamic without page refreshes. Since there are no page refreshes, but transparent AJAX calls going on, it is important to put in error handling code to ensure a good user experience in case something goes wrong. This blog post shows how to do this.
- Aug 27, 2022 Thymeleaf live reload with Spring Boot and Tailwind CSS This is the 3rd and final part of my series on live reloading with Thymeleaf and Spring Boot, this time focusing on Tailwind CSS.
no matches for "" — browse the full archive →