wake-up-neo.com

So haben Sie mehrere Bedingungen in einem th: if-Tag mit Thymeleaf

Ich habe einen Text, den ich mit thymeleaf in drei verschiedenen möglichen Farben rendern kann.

Der Code, den ich bisher gemacht habe, um den Wert zu testen, lautet:

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

Und das funktioniert gut.

Der dritte Test bezieht sich jedoch auf Werte zwischen diesen beiden. Also habe ich versucht:

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

aber es funktioniert nicht. Beim Parsen ist folgender Fehler aufgetreten:

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

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

Vielleicht ist der Operand und nicht korrekt, aber die Dokumentation von thymeleaf ist für diese Operanden nicht wirklich explizit.

Alle Ideen sind willkommen!

pdate: Ich habe die Antwort vom Thymeleaf-Forum erhalten. Der Weg dazu ist:

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

Problem gelöst!

41
brnrd

Ich habe die Antwort vom Thymeleaf-Forum erhalten. Der Weg dazu ist:

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

Problem gelöst !

52
brnrd

Das hat bei mir funktioniert:

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

Meiner Meinung nach könnte eine bessere und besser wartbare Lösung darin bestehen, den Evaluierungscode in einer geeigneten 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. Isolierung. Komplexere Auswertungen können ohne Änderung der Vorlage geschrieben werden.

Ich hoffe das hilft.

Ich habe dies getan, um mehrere Bedingungen in th:if In thymeleaf zu haben

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

Ich habe den Operator nd zwischen Bedingungen hinzugefügt. Sie können bei Bedarf auch oder hinzufügen.

5
Digvijay