Ir al contenido principal

Acceder a un tipo enumerado con JSTL

Bueno, como no, en mi día a día hoy me he visto forzado a usar un tipo enumerado con JSTL. El problema es que si usas la siguiente sentencia no funciona:
<c:if test="${consulta.estado eq EstadoConsulta.PENDIENTE">...</c:if>
Solución, guardarse los valores en el pageContext y usarlos mas tarde:
<% pageContext.setAttribute("pendiente", EstadoConsulta.PENDIENTE); %>
<c:if test="${consulta.estado eq pendiente}"/>...</c:if>
Otra solución que he visto es esta otra si tenemos un tipo enumerado tuneado:
public enum EstadoConsulta {
  PENDIENTE(1, "Pendiente"),
  LEIDA(2, "Leida");
 
  private int value;
  private String text;
  private static final Map typesByValue = new HashMap();

  static {
    for (EstadoConsulta type : EstadoConsulta.values())
      typesByValue.put(type.value, type);
  }

  private EstadoConsulta(int value, String text) {
    this.value = value;
    this.text = text;
  }

  public int getValue() { return value; }
 
  public String getText() { return text; }
 
  public static Map getMapValues() {
    return EstadoConsulta.typesByValue;
  }
}
Podremos hacer lo siguiente en nuestro JSP con JSTL:
<% pageContext.setAttribute("estados", EstadoConsulta.getMapValues()); %>
<c:out value="${estados[consulta.estado].text}" />

Comentarios

Entradas populares de este blog

Formatear fecha JSON

Para poder representar de forma bonita y humana una fecha retornada por un JSON por ejemplo, la función quedaría tal que así. En mi caso, el formato esperado es: dd/MM/yyyy hh:mm

function FormatDate(fecha) { var fechaObj = new Date(fecha); return (fechaObj.getDate() < 10 ? '0' : '') + fechaObj.getDate() + '/' + (fechaObj.getMonth() < 10 ? '0' : '') + fechaObj.getMonth() + '/' + fechaObj.getYear() + ' ' + (fechaObj.getHours() < 10 ? '0' : '') + fechaObj.getHours() + ':' + (fechaObj.getMinutes() < 10 ? '0' : '') + fechaObj.getMinutes(); };

Generar números aleatorios con Postgres

Muchas veces nos encontraremos con que tenemos que poblar una BD con numeros para poder testear un funcionalidad que estemos programando. En postgres es tan sencillo como:

update schema.tabla set columnaNumerica = floor(random() * N) + desviacion;
Con desviación me refiero a que, si no lo añadimos, random generara numeros empezando por el 0 hasta N. El uso de floor es para redondear y quedarme solo con la parte entera. Ya que random genera floats entre 0 y 1.

Espero os sirva este pequeño truquillo. Un saludico.

Reconectar proyecto de eclipse al SVN.

Es una receta muy sencilla sazonada con un poco de WTF? :P

Primero, debemos tener instalado el plugin en eclipse para manejar proyectos en SVN.Luego, configuramos la conexión al SVN.Seguidamente comprobamos si haciendo click derecho sobre el proyecto y navegando a: Team -> Share project esta habilitado.De no ser así, borramos el proyecto del eclipse SIN BORRAR LOS DATOS FISICOS.Lo importamos nuevamente al workspacePulsamos sobre la opción mencionada anteriormente. Configuramos la localización correcta del repositorio y listo.
Rica, rica y con fundamento. No me explico porque el eclipse hace algo tan sencillo de la forma más difícil