Pregunta

En una página JSTL/JSP, tengo un objeto java.util.Date de mi aplicación.necesito encontrar el dia después el día especificado por ese objeto.Puedo usar <jsp:scriptlet> para ingresar a Java y usar java.util.Calendar para hacer los cálculos necesarios, pero esto me parece torpe y poco elegante.

¿Hay alguna forma de utilizar etiquetas JSP o JSTL para lograr este fin sin tener que cambiar a Java completo, o es esta última la única forma de lograrlo?

¿Fue útil?

Solución

No soy partidario de poner código java en tu jsp.

Usaría un método estático y un taglib para lograr esto.

Aunque es sólo mi idea.Hay muchas maneras de resolver este problema.

public static Date addDay(Date date){
   //TODO you may want to check for a null date and handle it.
   Calendar cal = Calendar.getInstance();
   cal.setTime (date);
   cal.add (Calendar.DATE, 1);
   return cal.getTime();
}

funciones.tld

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
  <description>functions library</description>
  <display-name>functions</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>xfn</short-name>
  <uri>http://yourdomain/functions.tld</uri>
  <function>
    <description>
      Adds 1 day to a date.
    </description>
    <name>addDay</name>
    <function-class>Functions</function-class>
    <function-signature>java.util.Date addDay(java.util.Date)</function-signature>
    <example>
      ${xfn:addDay(date)}
    </example>
  </function>
</taglib>

Otros consejos

Si bien esto no responde a su pregunta inicial, quizás pueda eliminar la molestia de pasar por java.util.Calendar haciendo esto:

// Date d given
d.setTime(d.getTime()+86400000);

Tienes que usar un scriptlet o escribir tu propia etiqueta.Para que conste, usar Calendario se vería así:

Calendar cal = Calendar.getInstance();
cal.setTime (date);
cal.add (Calendar.DATE, 1);
date = cal.getTime ();

Realmente horrible.

Desafortunadamente, no hay ninguna etiqueta en las bibliotecas JSP/JSTL estándar que yo sepa que le permita realizar este cálculo de fecha.

La solución más simple y poco elegante es simplemente usar algún código scriptlet para hacer el cálculo.Ya ha dicho que cree que se trata de una solución complicada y estoy de acuerdo con usted.Probablemente escribiría una biblioteca de etiquetas JSP personalizada para obtener esto si fuera usted.

En general, creo que los JSP no deberían tener lógica de datos.Deben obtener todos los datos que necesitan mostrar del Controlador y toda su lógica debe ser sobre CÓMO se muestran los datos, no QUÉ se muestra.Esto suele ser mucho más simple y con mucho menos código/XML que agregar una etiqueta personalizada.

Y si no se produce ninguna reutilización, ¿un pequeño scriptlet es realmente mucho peor que el taglib XML?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top