Bom dia a todos.
Alguém poderia me ajudar neste pequeno pedaço de código que envolve java8, Thymeleaf e Spring.
É uma tela html de pesquisa que possui status de titulos. Por exemplo: o titulo pode estar: pendente, cancelado e pago. Fiz o código abaixo para colorir estes status e mostrar na tela mas não está funcionando, não dá erro mas não coloca as cores devidamente em cada status.
Os tipos de status vem de um enum
<td class="text-center" th:switch="${titulo.status.descricao}">
<span th:case="pendente" class="label label-danger" th:text="${titulo.status.descricao}"></span>
<span th:case="recebido" class="label label-success" th:text="${titulo.status.descricao}"></span>
<span th:case="cancelado" class="label label-danger" th:text="${titulo.status.descricao}"></span>
</td>
Código do ENUM:
public enum StatusTitulo {
PENDENTE("Pendente"),
RECEBIDO("Recebido"),
CANCELADO("Cancelado");
private String descricao;
StatusTitulo(String descricao) {
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}
}
Alguém sabe o que está faltando ou está errado neste código?
Tenta assim:
<td class="text-center" th:switch="${titulo.status}">
<span th:case="PENDENTE" class="label label-danger" th:text="${titulo.status.descricao}"></span>
<span th:case="RECEBIDO" class="label label-success" th:text="${titulo.status.descricao}"></span>
<span th:case="CANCELADO" class="label label-danger" th:text="${titulo.status.descricao}"></span>
</td>
Avalie pelo name
do Enum. E deixe tudo maiúsculo no case mesmo, pois acho que o case sensitive influencia.
Lucas_Camara:
Ps status “pendentes” ele coloca em vermelho, mas os canelados e pagos ficam com a cor verde.
Reparei que os classes estão repetidos para “PENDENTE” e “CANCELADO” (ambos estão como danger). Posta essas classes css para gente ver (label-danger e label-success).
Fiz a alteração que você notou e mais uma no switch aí funcionou:
<td class="text-center" th:switch="${titulo.status.descricao}">
<span th:case="Pendente" class="label label-danger" th:text="${titulo.status.descricao}"></span>
<span th:case="Recebido" class="label label-success" th:text="${titulo.status.descricao}"></span>
<span th:case="Cancelado" class="label label-warning" th:text="${titulo.status.descricao}"></span>
</td>
Valeu, obrigado.
Apenas recomendo que não se baseie na descrição do enum, mas sim no name dele. Pois o name que identifica o enum.