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 124- Oct 13, 2011 Synchronisation of Atlassian JIRA with LiquidPlanner While Atlassian JIRA is a great tool to manage a project, it is not really convenient to handle (many) multiple simultanious projects, especially as people need to work on different projects at the same time. I recently discovered LiquidPlanner which claims to be really good at multi-project/multi-resources management. After the trial period, our company decided to go with it and is very happy with the results so far. Since we have already much information in JIRA, we needed a way to pull this information into LiquidPlanner in an automated way. I wrote a small tool in Groovy that uses the LiquidPlanner REST API and the JIRA REST API to automate this. This blog entry will show how it works, part 2 will show the code to make it all work.
- Oct 13, 2011 Synchronisation of Atlassian JIRA with LiquidPlanner - Part 2 Part 1 showed how the JIRA to LiquidPlanner synchronizer makes it really easy to sync the remaining estimates on your JIRA issues with LiquidPlanner. This part will show the Groovy code to make it all work. Getting Started I used Groovy 1.8.2 and HTTPBuilder 0.5.1. Editing was done in Jetbrains IntelliJ IDEA 10.5.2 which has excellent Groovy support. The project is compiled and packaged using Maven 3.0.3 with various plugins. Connecting to JIRA and LiquidPlaner REST API
- Jul 1, 2011 JIRA Speakeasy extension to show 'key - summary' in an inline dialog We use JIRA at works to track issues (duh :)). What I need to do a lot is copy the key and summary of an issue to use as a checkin comment. If you copy paste it from an issue page you end up with this: PRJ-234 This is the summary of the issue But what I really want is this: PRJ-234 - This is the summary of the issue
- May 3, 2011 Entering the JIRA database values plugin in the Atlassian codegeist competition I just entered my JIRA Database Values Plugin in the Atlassian Codegeist competition. You can view my entry here: http://codegeist.atlassian.com/entry/167349 I uploaded a video with it to make it more visual. I was quite surprised to find it so easy to do on my Ubuntu (just updated to 11.04). Installed recordMyDesktop to do the actual screencast recording: sudo apt-get install gtk-recordmydesktop This will install a program shortcut called 'Desktop recorder'. Once running, there is a handy systray icon to start and stop the recording.
- Apr 11, 2011 Release JIRA Database Values Plugin 1.3.0 A new JIRA Database Values plugin has been released, see https://plugins.atlassian.com/plugin/details/4969 for download. The major change is compatibility with JIRA 4.3. There are some additional minor improvements like: Use the internal JIRA db if no connection parameters are defined in the properties file Honor the sort order used in the SQL query when using cascading comboboxes Fix for Z-order if the AJAX popup appears over some other elements (thanks to Edgars Fabricius for providing a patch)
- Feb 7, 2011 Validation of multiple email addresses in flex For our flex application, I had a 'cc' field that could handle multiple email addresses. When adding validation, I first used the standard EmailValidator class. However, this would not work as soon as you want to add multiple email addresss, like: foo@company.com;bar@company.com Luckily, creating a custom validator to handle this case is quite easy: import mx.validators.EmailValidator; import org.as3commons.lang.StringUtils; /** * This validator allows validation of multiple email addresses * that are separated by a semicolon (;) */ public class CompositeEmailValidator extends EmailValidator { public function CompositeEmailValidator() { } override protected function doValidation( value:Object ):Array { var result:Array = []; var emailsString:String = String( value ); var emails:Array = StringUtils.tokenizeToArray( emailsString, ";" ); for each (var email:String in emails) { var emailResult:Array = super.doValidation( email ); if (emailResult.length > 0) { result = result.concat( emailResult ); } } return result; } }
- Jan 20, 2011 JIRA Database values plugin new release 1.2 I am very proud on this new release of my jira database values plugin. Not only does it have a bunch of really nice additions (which I am going to explain a bit more in detail here), but there are also a lot of people that have helped this release by providing bug reports, patches, … 1) JQL Function to search on 'secondary' attributes I am most proud of this one, because I think it will be really useful to a lot of people. Suppose you link to your customer database and would like to know how many issues are coming from customers in Belgium. This was almost impossible to do before, but with the new dbValuesMatching JQL function, it is a piece of cake:
- Jan 13, 2011 JQL query for the jira database values plugin I have just finished implementing a custom JQL query for the jira database values plugin. It allows to search on anything you want related to the value you have in your custom field. Take the example of a "Customer" custom field that links to a customer table in a database. Previously it was not possible to search for all issues linked to the customers from a certain country for example. With the new JQL query, it is as easy as:
- Dec 10, 2010 Make IntelliJ IDEA X look great on Linux The new IntelliJ IDEA, called X, is out and there are lots of new goodies in there. For my day-to-day job, the most important is the improved Flex support. I work on Ubuntu 10.10 and by default IntelliJ does not look that great. This is a screenshot of the file menu: Go to File > Settings and select Appearance in the list. Check the Override default fonts by checkbox and select 'DejaVu Sans' from the list of fonts:
- Nov 29, 2010 Flex gotchas for Java programmers As a long time Java programmer switching to Flex, I have had some real gotcha moments. I want to share a few so you don’t fall into the same pitfalls as I have done. Casting Equals (or the lack of it) Setter optimization Casting In Java, you cast an object to a class or interface as follows: Object obj = ... String str = (String)obj;
no matches for "" — browse the full archive →