2008-11-11 2 views
33

Ich versuche, ein Datum zu formatieren mit:Format Datum mit fmt: format JSP

<fmt:formatDate value="${newsletter.createdOn}" pattern="MM/dd/yyyy"/> 

Newsletter ein Objekt mit einer createdOn Eigenschaft, die java.util.Date ist.

Wenn ich den vorherigen Satz rufe ich erhalten:

Nach der TLD, wird der Attributwert nicht Ausdrücke akzeptieren.

I fmt mit

<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %> 

Kennt jemand bin importieren, wie kann ich dieses Problem umgehen?

Ich benutze das jstl.jar kommt mit Tomcat.

Unter jstl.jar/META-INF/MANIFEST.MF bleibt:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.5.3 
Created-By: 1.4.2-b28 (Sun Microsystems Inc.) 
Specification-Title: JavaServer Pages Standard Tag Library (JSTL) 
Specification-Version: 1.1 
Implementation-Title: JavaServer Pages Standard Tag Library API Refere 
nce Implementation 
Implementation-Version: 1.1.0-D13 
Implementation-Vendor: Sun Microsystems, Inc. 
Implementation-Vendor-Id: com.sun 
Extension-Name: javax.servlet.jsp.jstl 

Ich bin mit Apache Tomcat Version 6.0.14

+8

Formatieren Sie Ihr Datum als "MM/TT/JJJJ" ist böse :) Verwenden Sie stattdessen MMM TT JJJJ, wobei MMM der Name des Monats ist. Sonst wird ein Datum von sagen 1/6/2009 haben Ihre potenziellen Publikum denken, dass es am 1. Juni veröffentlicht wurde. –

+0

Wissen Sie, welche Version von Tomcat Sie verwenden? – sblundy

+0

Ok, ich bin verwirrt. Haben Sie einen sauberen Build erstellt, heruntergefahren,% TOMCAT_HOME% \ work gelöscht, neu gestartet und neu implementiert, um sicherzustellen, dass nichts im Hintergrund bleibt? – sblundy

Antwort

1

Sind Sie sicher, dass Sie nicht die Runtime-Versionen mit der das Tag lib? Können wir die Importanweisung der Bibliothek sehen?

Ich denke, lucus ist auf etwas, nach diesem FAQ auf JavaRanch, das ist eine JSTL 1.0 Erklärung. Möglicherweise möchten Sie auf 1.1 aktualisieren.

Was ist Ihre Umgebung, App-Server und Version?

+0

hinzugefügt in der Hauptfrage –

+0

Wissen Sie, welche Version Sie verwenden? – sblundy

+0

aktualisiert die Hauptfrage –

41

Versuchen

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
+0

Ich löste das Problem mit dieser einfacheren Antwort. Vielen Dank! –

+0

Der Unterschied ist der .../jsp/... Teil der URI. –

0

Sie die fmt-1_0-rt.tld oder fmt-1_0.tld taglib verwenden.

Der Unterschied ist, werden die Einstellungen für rtexprvalue

In einem ist dies falsch ist, in der anderen ist es wahr.

+0

Keine Ahnung, wie kann ich das wissen? Ich verwende die jstl.jar, wo diese Tags definiert sind. –

1

Verwenden Sie JSTL 1.0 oder 1.1? formatDate in 1.1 sollte Ausdrücke akzeptieren.

+0

ich denke, jstl 1.1 –

1

Anscheinend brauchte ich 1.1, aber ich musste die Bibliothek importieren Anweisungen für c und fmt ändern.
Jetzt funktioniert es. Danke für die Hilfe und Entschuldigung für die Verwirrung.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
5

This guy scheint, um das Problem gearbeitet zu haben, indem die TLD aus dem Glas zu extrahieren, zu modifizieren es, sie in der WEB-INF-Verzeichnis des WAR platzieren und einen Beitrag für seine web.xml wie folgt aus:

<jsp-config> 
<taglib> 
    <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> 
    <taglib-location>/WEB-INF/fmt.tld</taglib-location> 
</taglib> 
</jsp-config> 

Am Ende wechselte er auf die 1.1 Erklärung:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"/> 
+0

Problem ist sblundy gelöst. Danke für Ihre Hilfe. Du schaukelst! –

+2

Eigentlich war nur das Fixieren der Taglib-URI ausreichend. Hassing mit losen TLDs ist ein großer Mythos und sollte eigentlich nicht gemacht werden. – BalusC

+0

Der Link "Dieser Typ" ist defekt –

1

Es ist einfach für mich gearbeitet durch "_RT" und fügte hinzu url wie diese TagLib:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt_rt" %> 

Ich fand es in this article

Spaß haben!

+1

Sie haben eine veraltete JSTL-Version (dieser Artikel ist auch alt). Aktualisieren Sie JSTL. Lesen Sie [unsere JSTL-Wiki-Seite] (http://stackoverflow.com/tags/jstl/info). – BalusC

2

Ich stieß auf das gleiche Problem.

I Changed <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jstl/ fmt" %> zu <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jstl/ fmt_rt"%> und es funktionierte für mich!

0
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix='fmt'%> 

funktioniert für mich.