2016-04-20 12 views
1

Ich muss Tag in meiner Thymeleaf Vorlage bedingt schließen. Sag mal, während einige Sammlung von Elementen Iterieren Ich muss Reihe von einigen von ihnen in einzelne <div> wickeln:Bedingt schließend Tag in Thymeleaf

<div>...element1, element2, element3...</div> 
<div>...element4...</div> 
<div>...element5, element6...</div> 

Diese archiviert werden könnte, wenn eine Möglichkeit des bedingten Tag Schließung existieren würde. Aber ich kann natürlich nicht </div th:if="..."> schreiben. Wenn es jsp wäre könnte ich einfach schreiben so etwas wie:

<%if (condition) {%></div><%}%> 

Irgendwelche Ideen, wie dieses Problem zu lösen?

EDIT Um genau zu sein, meine Elemente Saiten nicht nur, sie sind komplexe innere html Blöcke.

+0

Ich denke, Sie müssen die '

elem1,2,3
'in den Zustand mit' th: if' und 'th: außer' Blöcke (Wenn das ist, was Sie fragen) wickeln Aber thymeleaf wirft einen Fehler, wenn das schließende Tag wird vermisst? Warum brauchst du das? – Lucky

+0

@Lucky bitte, wenn ich frage, dann brauche ich es definitiv. – Andremoniy

+0

Aber das würde nicht laufen, denke ich. Deshalb habe ich es gefragt. Du könntest das if ausprobieren, außer wenn es Blöcke gibt. Denn als ich auf dasselbe Problem stieß. Thymleaf dint erlauben halbgebackenen HTML-Code. Es hat einen Fehler ausgelöst, wenn das Element keinen geschlossenen Block hat. Oder kann bei Bedarf switch-Anweisung sein. – Lucky

Antwort

-1

bewegen die bedingte Logik auf eine Schicht

<body th:each="..."> 
    <div></div> 
</body> 

werfen Sie einen Blick auf die Dokumentation hier: http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#using-theach

+0

Können Sie klären, was meinst du? Wie wird das mein Problem lösen? – Andremoniy

+0

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag.- [Aus Bewertung] (/ review/low-quality-posts/12097758) – pczeus

+0

vielleicht könnten Sie die Frage klären und uns etwas Code zeigen. so können wir besser Ihre Frage beantworten – ndrone

0

ich die Abhilfe gefunden habe. Eine Reihe von Blöcken, die in einzelne <div> verpackt werden sollen, sollten als getrennte Listen innerhalb des Modells dargestellt werden. Sprich, ich habe Element Klasse, die meine element Block beschreibt. So soll mein Modell sein wie:

List<Element> elementGroups

und ich habe es doppelte Schleife erstellen:

<div th:each="group : ${elementGroups}"> 
    <th:block th:each="element : ${group}"> 
     ... 
    </th:block> 
</div> 
+0

Downvoter, außerdem weiß ich wer du bist, irgendwelche wesentlichen Kommentare? – Andremoniy

2

Ich denke, es ist besser, die Daten als separate Listen darstellen, wie Sie in your previous answer erwähnt .

Aber selbst aus Neugier, gibt es eine hässliche Workaround um etwas Ähnliches wie <%if (condition) {%></div><%}%> zu erreichen, wie Sie gefragt haben.

Der Trick ist, den Tag als entkam Text zu generieren:

<th:block th:if="${openTagCondition}" th:utext="'&lt;div&gt;'" /> 

<th:block th:if="${colseTagCondition}" th:utext="'&lt;/div&gt;'" /> 

Dies ist nur aus Neugier. Ich empfehle nicht, diese Problemumgehung zu verwenden, da sie ziemlich unlesbar ist, die Wartungsfreundlichkeit beeinträchtigt und Sie unausgeglichene Tags hinterlassen können.