Your Privacy

This site uses cookies to enhance your browsing experience and deliver personalized content. By continuing to use this site, you consent to our use of cookies.
COOKIE POLICY

Skip to main content

Spring Thymeleaf Tips | Part 1

Spring Thymeleaf Tips | Part 1
Back to insights

We’ve been developing a UI using Spring Thymeleaf (2.1.2) on our team. I’ve noticed a serious dearth of examples outside of specific questions on Stack Overflow, so I figured I’d throw my hat in the ring and offer a few tips and tricks we’ve picked up over the 10 or so months working with this templating system. This is part one of a series. In each exploration, we will examine a few different pieces of Thymeleaf that could make your life a little easier. This first one is a few tips and tricks that should help keep your templates a little more readable.

Make Function Calls Into Your POJOs

Sometimes we need a little more power behind our retrieval operations. When it’s too complicated to try and manage it inline or Thymeleaf’s expressions don’t cover your use case, you can always use a formatter method on your domain object and call that directly in the template.

Let’s say we have a list of people with addresses, and we want to format the second address field on its own line if it’s there. We could use a ternary operator for that in a big messy concatenation, but for the sake of readability, it’s easier to wrap it in a function and let the model serve up the formatted text.

This markup produces:

Use Ternary Operators for Unreliable Info

Sometimes you run across a case where a piece of data isn’t present yet in the state of your application. In some of these cases, clever use of the ternary operator can make for an inline data swap instead of having to use th:if or th:block.

Use RowStat to Grab the Index Th:Each

There’s a secondary argument available to th:each – rowStat. It allows you to access certain values around the collection you are iterating over.

Use Th:Field for Fun and Profit

If you don’t want to type the name of your input over and over again, use th:field. It turns this:

into this:

Use Th:Object for Cleaner Templates

For a specific block of code, you can use th:object to allow direct reference to an object’s members. Once we do that to our table, it looks like this:

Note the change in the notation from ‘$’ to ‘*’. This tells Thymeleaf to look up the tree for a parent object.

That’s all for today. Next time we’ll cover standard expression libraries, Java 8 time expressions, data types and integrating Thymeleaf service objects with your javascript.

Digging In

  • Software Engineering

    Building a Consultant in the Trenches: How Playing Offensive Line Shaped My Consulting Career

    People often ask me the same question when they find out that I played college football: “Do you miss it?” On the surface, it’s a bad question with an obvious answer. Yes. However, if I give myself a minute to sit with that question, the answer is more nuanced. Yes, I miss playing football, but […]

  • Software Engineering

    Modernization That Sticks: Why Adoption, Not Just Architecture, Drives Success

    Modernizing a legacy sales platform in a large enterprise isn’t just a technical challenge, it’s a cultural and operational one. On a recent project with a Fortune 500 organization, several past attempts to replace the aging ERP system failed. Why? Because those efforts treated modernization as a software delivery exercise, not an adoption journey. When […]

  • Software Engineering

    Choosing the Right Modernization Approach

    When organizations decide it’s time to modernize their technology infrastructure, choosing the right approach is crucial. Modernization isn’t merely a technical upgrade; it’s a strategic business move that significantly impacts growth, agility, and long-term success. Here’s how your company can effectively begin to select the best modernization strategy tailored to your goals and challenges. In […]

  • Software Engineering

    TAG Panel: Differentiate Your Customer Experience

    Join the CX and Product Management Societies to hear from our panel of Human-Centered Design experts on the business value of Agentic AI.

  • Software Engineering

    The Bloated SaaS Era: Paying More for Less While Businesses Wait

    SaaS was supposed to make business faster, smarter, and more efficient. Instead, it’s become bloated, expensive, and painfully slow to change. The platforms we rely on—Salesforce, Workday, SAP, and others—haven’t truly innovated in years. Yet, they demand massive investments in re-implementation, process re-engineering, and data migration just to keep up. It’s time to ask: Are […]

  • Software Engineering

    Reid Braswell Joins UDig as Vice President, Software Engineering

    UDig is proud to welcome Reid Braswell as our new Vice President of Software Engineering. With over 13 years of experience in technology consulting, Reid brings deep expertise in digital transformation, modern software engineering, and client-focused solutions. His leadership and passion for solving complex challenges make him an exceptional addition to the UDig team. Reid’s […]