in

java – Declaración de cambio de Thymleaf con múltiples mayúsculas y minúsculas

apple touch icon@2

Hoy me encontré con el mismo problema, donde el objeto utilizado en mi th:switch es una enumeración de Java. Finalmente descubrí que esto era un problema de Java igual () versus ==. En el th:switch Tengo un objeto enum, pero en mi th:case Tengo un objeto String. Lo resolví usando una función de cadena Thymeleaf para convertir el objeto enum en una cadena, y luego todo funciona.

  <div th:switch="${#strings.toString(datafile.status)}">
      <td th:case="'SUCCESS'" class="table-success">SUCCESS</td>
      <td th:case="'FAILED'" class="table-danger">FAILED</td>
      <!-- default case -->
      <td th:case="*" th:text="${#strings.toString(datafile.status)}" class="table-secondary">xxx</td>
  </div>

En mi ejemplo anterior, estoy usando el interruptor para aplicar condicionalmente un estilo Bootstrap a una celda de la tabla.


Una solución alternativa es realizar la lógica en el código Java y exponer el valor de salida como una propiedad de objeto, luego simplemente hacer referencia a esa propiedad en la plantilla Thymeleaf. Algo como esto:

public String getBootstrapTableRowClassForStatus() {
    Objects.requireNonNull(status);
    switch (status) {
        case SUCCESS:
            return "table-success";
        case FAILED:
            return "table-danger";
        case PROCESSING:
            return "table-info";
        default:
            return "table-secondary";
    }
}

y luego uso Thymeleaf th:class:

<tr th:class="${datafile.bootstrapTableRowClassForStatus}">

En mi página, esto aplicará un estilo de color Bootstrap a la fila de mi tabla en función del valor de mi enumeración de estado en el objeto Java.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Git – Operación de alijo

tPhaRXEBfUH8Ev4vgRxqVE 1200 80

El DLC de The Last of Us 2 puede haber sido planeado, pero al parecer ya no está en desarrollo