Ich habe eine Vorlage wie folgt aus:Wie kann ich dieses Template-Snippet von Thymeleaf 2.1.4 auf Thymeleaf 3.0 migrieren?
<table th:with="isEven=false">
<tr th:if="*{foo} != null" class='odd' th:class="${isEven=!isEven}?'even':'odd'">
foo
</tr>
<tr th:if="*{bar} != null" class='odd' th:class="${isEven=!isEven}?'even':'odd'">
bar
</tr>
</table>
Es mit Thymeleaf arbeitete 2.1.4 aber mit 3.0.0 wirft es die folgende Ausnahme:
org.thymeleaf.exceptions.TemplateProcessingException:
Exception evaluating OGNL expression: "isEven=!isEven" (template: "foo" - line 10, col 34)
Caused by: java.lang.UnsupportedOperationException:
Cannot set values into VariablesMap instances from OGNL Expressions
Jede Idee, wie dieses Problem beheben?
Hinweis: Dies ist keine Schleife, so gibt es kein varStat
Objekt wie in
<tr th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'">
Die <tr>
auf dem th:if
Zustand erzeugte abhängig und ich würde eine wie auch haben/Seltsame Umschaltung für sie.
Bearbeiten: Ich öffnete eine Github issue für dieses Problem.
Das hilft nicht viel, da es viele und viele andere Variablen gibt, die 'foo' und' bar' folgen. Es ist beabsichtigt, etwas "zu drucken", wenn der Inhalt nicht leer ist, und zwar mit einer alternierenden "gerade"/"ungeraden" Klasse in der erzeugten Ausgabe. Ich brauche im Wesentlichen einen 'varStat', aber ohne umschließende Schleife, etwas ein bisschen wie ein" manueller "varStat. – Huxi
In diesem Fall scheint es die am besten geeignete Lösung zu sein, eine Bean zu erstellen, die Sie in Ihren Kontext aufnehmen, und welche Methoden Sie aus Ihren Ausdrücken aufrufen können, um einen Index zurückzugeben (und eine andere Methode, um zu sagen, ob sie gerade oder ungerade ist)). Ähnlich wie varStat, aber manuell hinzugefügt. –