I have a Thymeleaf template code to format a date. There are times when that date will be null
in the returned object. What is the best way to check for null
in Thymeleaf in this situation? Currently the template is throwing the following error:
Caused by: java.lang.IllegalArgumentException: Cannot apply format on null at org.thymeleaf.util.Validate.notNull(Validate.java:37) at org.thymeleaf.util.DateUtils.format(DateUtils.java:182) at org.thymeleaf.expression.Dates.format(Dates.java:164)
Another way to handle null values in the Thymeleaf templates is by using the Elvis operator or default expression. It is a special kind of conditional expression without a then part. Elvis operator lets you specify two expressions in one attribute.
It is better suited for serving XHTML/HTML5 in web applications, but it can process any XML file, be it in web or in standalone applications. The main goal of Thymeleaf is to provide an elegant and well-formed way of creating templates.
th:block is a Thymeleaf element rather than an attribute, and it has the general syntax: 1 2 3. <th:block> <!-- Your HTML code --> </th:block> th:block allows you to apply the same Thymeleaf attribute, like th:if or th:each to a block of code.
You can also use a conditional expression on your object, so that the formatting method is only applied if you object is not null: th:text="${myDate} ? ${#dates.format(myDate,...)}"
Note there is no "else" part in the expression above, and in that case the expression will simply return null (making the th:text
attribute write nothing).
(Disclaimer required by StackOverflow: I am the author of thymeleaf)
you can either use thymeleafs objects utility class Objects or validate the object before passing it to the template.
i prefer the prevalidation as you normally do not want to hack around in your template. also that way you keep your data loosely coupled from the view.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With