Доступ к перечислениям в Thymeleaf - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь прочитать Enum с помощью шаблона thymeleaf

public enum OrderStatus{
 COMPLETE("Completed"),
 PENDING("Pending");

 private String status;

 public String getStatus(){
    return this.status;
 }
}

Когда я пытаюсь получить доступ к этому перечислению из thymeleaf

<div th:text=${T(com.order.enum.OrderStatus).COMPLETE.getStatus()}"/>
<div th:text=${T(com.order.enum.OrderStatus).valueOf('COMPLETE').getStatus()}"/>

, это работает. Но статус ЗАВЕРШЕНО и ОЖИДАЕТСЯ на основе ввода от моего контроллера. Я пытаюсь что-то вроде этого

<div th:text=${T(com.order.enum.OrderStatus).${order.requestedStatus}.getStatus()}"/>
<div th:text=${T(com.order.enum.OrderStatus).valueOf('${order.requestedStatus}').getStatus()}"/>

Я получаю Не удалось разобрать как выражение: для первого Нет константы перечисления com.order.enum.OrderStatus. $ {Order.requestedStatus} для второго Есть ли способ, которым я могу динамически вызывать перечисление

Класс My Order

Class Order{
   private String requestedStatus;

   getters & setters

}

Метод моего контроллера

@GetMapping 
public string getOrder(Model model){
  model.addAttribute("order", Order);
  return "result"
}

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Вы можете использовать функцию получения следующим образом: <td th:text="${order.getOrdersStatus()}"> </td>

0 голосов
/ 27 февраля 2020

попробуйте это в вашем шаблоне:

<div th:text=${order.requestedStatus.status}"/>

Вы должны ссылаться на перечисление как T(com.order.enum.OrderStatus), только если вы хотите сделать сравнение или напечатать значение перечисления напрямую (не значение одного из ваш объект, который возвращает перечисление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...