thymeleaf evaluate string as variable

Viewed 52

suppose I have a thymeleaf fragment named "reference" that takes a parameter referenceNumber="1" and in my model I have "reference1_firstName" = "Bob"

<div ... th:fragment="reference(referenceNumber)">
   Reference <div th:text="${referenceNumber}"/> first name is <div th:text="${'reference' + referenceNumber + '_firstName'}".>
</div>

in the obviously incorrect example above I would like to print out "Reference 1 first name is Bob". It seems so simple, I can do it in several other languages, but so far my search has come up empty for thymeleaf

1 Answers

Couple ways to do this.

Preprocessing:

<span th:text="${reference__${referenceNumber}___firstName}" />

#ctx basic object:

<span th:text="${#ctx.getVariable('reference' + referenceNumber + '_firstName')}" />
<span th:text="${#ctx['reference' + referenceNumber + '_firstName']}" />

Or if you intend to access variables this way, use a Map instead of variables.

Related