2017-02-24 1 views
0

Ich habe einen Farbfilter, simillar dazu:Ob es möglich ist, 'checkbox' zu verstecken mit th: außer?

<input type="checkbox" id="orange" class="orange" value="orange"/>orange 
      <br/> 
      <input type="checkbox" id="peach" value="peach"/>peach 
      <br/> 
      <input type="checkbox" id="terracotta" value="terracotta"/>terracotta 
      <br/> 
      <input type="checkbox" id="coffee" value="coffee"/>coffee 
      <br/> 
      <input type="checkbox" id="browne" value="browne"/>browne 
      <br/> 
      <input type="checkbox" id="rose" value="rose"/>rose 
      <br/> 
      <input type="checkbox" id="red" value="red"/>red 
      <br/> 

I recive Farbe von DB.

Kann ich Farbe verstecken, mit Verwendung von Thymeleaf, die nicht in DB ist? Zum Beispiel habe ich jetzt keine Rose, Kaffee und Pfirsichfarben, aber vielleicht werde ich in Zukunft diese Farbe haben. Ich möchte die Farben überprüfen, wenn die Farbe in der DB ist, kann der Benutzer auf der UI-Checkbox sehen, sonst die Checkbox ausblenden. Ich lese über th:if und th:unless. Ob es möglich ist, es mit Thymoleaf zu machen?

Wenn ich versuche zu tun:

<input type="checkbox" th:if="${model.color==coffee}"id="coffee" value="coffee"/>coffee 

Es funktioniert nicht.

Antwort

1

Anstatt Farben zu verstecken, sollten Sie auch die Farbfelder mit einer Schleife erstellen. Wie folgt aus:

<th:block th:each="model : ${allColor}" th:with="color=${model.color}"> 
    <input type="checkbox" th:id="${color}" th:class="${color}" th:value="${color}"/> <span th:text="${color}" /> 
    <br /> 
</th:block> 

Was, warum Ihr ursprünglicher Versuch nicht funktionierte, ist es schwer, ohne mehr von dem HTML-Code zu sehen, zu erzählen. Ich nehme an, dass $ {model.color} undefiniert war, weil Sie nicht in einer Schleife waren? Außerdem fehlten dir Zitate um "Kaffee". so: `$ {model.color == 'kaffee'

So etwas mag auch funktionieren, aber ich würde die Schleife empfehlen.

<input th:if="${allColor.contains('orange')}" type="checkbox" id="orange" class="orange" value="orange"/>orange<br/> 
<input th:if="${allColor.contains('peach')}" type="checkbox" id="peach" value="peach"/>peach<br/> 
<input th:if="${allColor.contains('terracotta')}" type="checkbox" id="terracotta" value="terracotta"/>terracotta<br/> 
<input th:if="${allColor.contains('coffee')}" type="checkbox" id="coffee" value="coffee"/>coffee<br/> 
<input th:if="${allColor.contains('browne')}" type="checkbox" id="browne" value="browne"/>browne<br/> 
<input th:if="${allColor.contains('rose')}" type="checkbox" id="rose" value="rose"/>rose<br/> 
<input th:if="${allColor.contains('red')}" type="checkbox" id="red" value="red"/>red<br/>}`. 
+0

' orange' in dieser Variante kann ich 'checkbox' nicht sehen, sehe ich wie 'span' – Viking

+0

Ist' allColor' eine Liste ? Oh, du musst allColor in eine Liste von Strings konvertieren, wenn du willst, dass dies funktioniert. – Metroids

+0

'
' Auf diesem Teil Code empfange ich: ** Konnte nicht als Zuweisungssequenz parsen: "color: $ {curtain.color}" ** Vielleicht weil ich 'allColor' habe Name, Farbe, ID – Viking

Verwandte Themen