listar formulario ejemplos java jsp jstl

java - formulario - jstl maven



En JSTL/JSP, dado un java.util.Date, ¿cómo puedo encontrar el día siguiente? (5)

Si bien esto no responde a tu pregunta inicial, tal vez puedas eliminar la molestia de pasar por java.util.Calendar al hacer esto:

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

En una página JSTL / JSP, tengo un objeto java.util.Date de mi aplicación. Necesito encontrar el día después del 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 se siente torpe y poco elegante para mí.

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


En general, creo que las JSP no deberían tener lógica de datos. Deben obtener todos los datos que necesitan para mostrar desde el 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 mucho menos código / XML que agregar una etiqueta personalizada.

Y si no hay ningún evento de reutilización, ¿es una pequeña scriptlet realmente mucho peor que el taglib XML?


Lamentablemente, no hay ninguna etiqueta en las bibliotecas JSP / JSTL estándar que conozco que le permita hacer este cálculo de fecha.

La solución más simple y poco elegante es usar un código scriptlet para hacer el cálculo. Ya has declarado que crees que esta es una solución torpe, y estoy de acuerdo contigo. Probablemente escribiría un taglib JSP personalizado para obtener esto si fuera tú.


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

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

Solo mi idea sin embargo. Hay muchas formas 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>


Tienes que usar un scriptlet o escribir tu propia etiqueta. Para el registro, usar Calendar se vería así:

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

Verdaderamente horrible.