Frage

Auf einer JSTL / JSP-Seite, habe ich ein java.util.Date Objekt aus meiner Anwendung. Ich brauche den Tag nach Tag von diesem Objekt angegeben zu finden. Ich kann verwendet werden. in Java fallen zu lassen und verwenden java.util.Calendar die notwendigen Berechnungen zu tun, aber das fühlt sich ungeschickt und unelegant mir

Gibt es eine Möglichkeit JSP oder JSTL-Tags zu verwenden, um dieses Ziel zu erreichen, ohne in Voll auf Java zu wechseln, oder ist dieser der einzige Weg, dies zu erreichen?

War es hilfreich?

Lösung

Ich bin kein Fan von Java-Code in Ihren jsp setzen.

ich eine statische Methode und ein taglib verwenden würde dies zu erreichen.

Nur meine Idee aber. Es gibt viele Möglichkeiten, dieses Problem zu lösen.

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();
}

functions.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>

Andere Tipps

Während dies nicht Ihre erste Frage beantworten, könnten Sie vielleicht den Aufwand beseitigen von, indem Sie diese durch java.util.Calendar gehen:

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

Sie müssen entweder eine scriptlet verwenden oder eigenen Tag zu schreiben. Für das Protokoll, Kalender verwenden würde wie folgt aussehen:

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

Wirklich schrecklich.

Leider gibt es keinen Tag in den Standard-JSP / JSTL Bibliotheken, die ich kenne, Sie erlauben würde, dieses Datum Berechnung zu tun.

Die einfachste und unelegant, Lösung ist nur einige scriptlet Code zu verwenden, um die Berechnung zu tun. Sie haben bereits erklärt, dass Sie denken, das eine klobig Lösung ist, und ich stimme mit Ihnen überein. Ich würde wahrscheinlich eine benutzerdefinierte JSP taglib schreiben diese zu bekommen, wenn ich du wäre.

Generell denke ich, JSPs sollten keine Daten Logik haben. Sie sollten alle Daten erhalten, die sie benötigen, von der Steuerung angezeigt werden und alle ihre Logik sein sollte, wie die Daten angezeigt wird, nicht, was angezeigt wird. Dies ist in der Regel viel einfacher und viel weniger Code / XML als einen benutzerdefinierten Tag hinzuzufügen.

Und wenn es keine erneute Verwendung geschieht, ist ein winziges scriptlet wirklich so viel schlechter als die taglib XML?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top