Wie man mehrere Bedingungen in einem th:if-Tag mit Thymeleaf hat

Lesezeit: 2 Minuten

Benutzer-Avatar
brnrd

Ich habe einen Text, der in drei verschiedenen möglichen Farben wiedergegeben werden soll Thymelblatt.

Der Code, den ich bisher zum Testen des Werts erstellt habe, lautet also:

th:if="${evaluation} > 50"
th:if="${evaluation} < 30"

Und das funktioniert gut.

Aber der dritte Test ist für Werte zwischen diesen beiden. Also habe ich versucht:

th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"

aber es funktioniert nicht, ich habe diesen Fehler beim Parsen:

org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "(${evaluation} < 49) &and; (${evaluation} > 29)" (/property.html:41)

Natürlich befinden sich diese Zeilen zwischen Tags, da die ersten beiden ordnungsgemäß funktionieren.

Vielleicht ist der Operand und nicht korrekt, aber die Dokumentation von thymeleaf ist zu diesen Operanden nicht wirklich explizit.

Alle Ideen sind willkommen!

Aktualisieren: Ich habe die Antwort aus dem Thymeleaf-Forum bekommen. Der Weg dazu ist:

th:if="${evaluation &lt; 49 and evaluation &gt; 29}"

Problem gelöst!

Ich habe die Antwort aus dem Thymeleaf-Forum bekommen. Der Weg, es zu tun ist:

th:if="${evaluation &lt; 49 and evaluation &gt; 29}"

Problem gelöst !

Das hat bei mir funktioniert:

th:if="${evaluation lt 49 and evaluation gt 29}"

  • Unter Verwendung eines Datumsobjekts habe ich die folgenden Werke gefunden th:if=”${date.month ge 4 und date.month le 4}”

    – Benjamin

    19. Mai 2014 um 18:01 Uhr

  • Gleiche Antwort wie die akzeptierte, aber sauberere Syntax. Wenn dies bestätigt wird, sollte dies die akzeptierte Antwort sein.

    – Jeroen Kransen

    19. Mai 2016 um 9:32 Uhr


  • Die akzeptierte Antwort hat bei mir nicht funktioniert, diese hat funktioniert, danke!

    – Chris Sim

    22. Oktober 2019 um 13:49 Uhr

Meiner Meinung nach könnte eine bessere und wartbarere Lösung darin bestehen, den Evaluierungscode in einer eigenen Klasse zu schreiben.

class Evaluator{

private int value;
....

public boolean isBounded() {
    return value < 49 && value > 29;
}

Rufen Sie dann in Thymeleaf die Funktion auf:

<p th:if="${evaluator.isBounded()} ...

Einige Vorteile:

  1. Sauberere Vorlage.
  2. Steuerung im Java-Code.
  3. Isolation. Komplexere Auswertungen konnten geschrieben werden, ohne die Vorlage zu ändern.

Ich hoffe das hilft.

  • Dies beantwortet die Frage nicht.

    – Jeremy Ferguson

    26. Februar 2016 um 19:09 Uhr

Ich habe dies getan, um mehrere Bedingungen zu haben th:if im Thymianblatt

<div 
     th:if="${object.getStatus()} == 'active' and ${object.getActiveDate()}"
     th:text="${#dates.format(object.getActiveDate(), 'yyyy-MM-dd')}"
</div>

Ich habe die hinzugefügt und Operator zwischen Bedingungen. Sie können auch hinzufügen oder wenn benötigt.

1278120cookie-checkWie man mehrere Bedingungen in einem th:if-Tag mit Thymeleaf hat

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy