Подтвердить что ты не робот

Оператор переключения Thymleaf с несколькими корпусами

Короче

Я хочу иметь оператор switch в тимелеафе с логикой, однажды написанной для нескольких операторов case.

Подробнее

Я хочу реализовать это в тимелеафе

switch(status.value){
  case 'COMPLETE':
  case 'INVALID':
     //print exam is not active
     break;
  case 'NEW':
     //print exam is new and active
     break;
}

Мой текущий код thymleaf, который не работает с ошибкой времени выполнения

 <div th:switch="${status.value}">
      <div th:case="'COMPLETE','INVALID'">
         <!-- print object is not active -->
      </div>
      <div th:case="NEW'">
         <!-- print object is new and active -->
      </div>
 </div>                             

Но приведенный выше код с ошибкой

org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "'COMPLETE','INVALID'"...

Примечание. Я знаю причину этого выше сообщения об ошибке. Все, что мне нужно, это знать способ реализации коммутатора с несколькими случаями для одного выхода

4b9b3361

Ответ 1

Неисправность вызвана тем, что в первом случае у вас нет правильного выражения. В частности,

'COMPLETE','INVALID'

не является допустимым выражением. Я подозреваю, что то, что вы пытаетесь сделать, это включить div, если статус COMPLETE или INVALID. К сожалению, я считаю, что вам придется дублировать разметку для этих условий индивидуально. Позвольте мне предложить следующую разметку:

<!-- th:block rather than unneeded div -->
<th:block th:switch="${status.value}">
  <div th:case="'COMPLETE'">
     <!-- print object is not active -->
  </div>
  <div th:case="'INVALID'">
     <!-- print object is not active -->
  </div>
  <div th:case="'NEW'">
     <!-- print object is new and active -->
  </div>
</th:block>

В качестве альтернативы вы можете прибегнуть к th: если в этом случае он может работать лучше:

<div th:if="${status.value} eq 'COMPLETE' or ${status.value} eq 'INVALID'">
   <!-- print object is not active -->
</div>
<div th:if="${status.value} eq 'NEW'">
     <!-- print object is new and active -->
</div>

Или еще проще:

<div th:unless="${status.value} eq 'NEW'">
   <!-- print object is not active -->
</div>
<div th:if="${status.value} eq 'NEW'">
     <!-- print object is new and active -->
</div>