2008-11-11 22 views
33

estoy tratando de dar formato a una cita con:formato de fecha con fmt: formatDate JSP

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

boletín es un objeto con una propiedad que es createdOnjava.util.Date.

Cuando invoco la frase anterior me sale:

Según el TLD, el valor del atributo no acepta expresiones.

Estoy importando FMT con

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

¿Alguien sabe cómo puedo solucionar este problema?

Estoy usando el jstl.jar que viene con tomcat.

Bajo jstl.jar/META-INF/MANIFEST.MF permanece:

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 

estoy usando Apache Tomcat versión 6.0.14

+8

Formatear su fecha como "MM/dd/aaaa" es malo :) Use MMM dd aaaa en su lugar, donde MMM es el nombre del mes. De lo contrario, una fecha de, digamos, 1/6/2009 dejará a su audiencia potencial pensando que fue publicada el 1 de junio. –

+0

¿Sabe qué versión de Tomcat está ejecutando? – sblundy

+0

Ok, estoy confundido. ¿Has realizado una compilación limpia, apagado, eliminado% TOMCAT_HOME% \ work, reiniciado y vuelto a implementar para asegurarte de que no haya problemas? – sblundy

Respuesta

1

¿Seguro que no está utilizando las versiones de tiempo de ejecución la etiqueta lib? ¿Podemos ver la declaración de importación de la biblioteca?

Creo que lucus está en algo, según este FAQ en JavaRanch, eso es una declaración JSTL 1.0. Es posible que desee actualizar a 1.1.

¿Cuál es su entorno, servidor de aplicaciones y versión?

+0

agregado en la pregunta principal –

+0

¿Sabes qué versión estás usando? – sblundy

+0

actualizó la pregunta principal –

41

Trate

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

Resolví el problema con esta respuesta más simple. ¡Gracias! –

+0

La diferencia es la .../jsp/... parte de la uri. –

0

¿Está usando el fmt-1_0-rt.tld o fmt-1_0.tld taglib.

La diferencia es la configuración de rtexprvalue

En uno, esto es falso, en el otro es cierto.

+0

No tengo idea, ¿cómo puedo saber esto? Estoy usando el jstl.jar donde están definidas estas etiquetas. –

1

¿Estás utilizando JSTL 1.0 o 1.1? formatDate en 1.1 debería aceptar expresiones.

+0

creo que jstl 1.1 –

1

Aparentemente, necesitaba 1.1 pero tuve que cambiar las instrucciones de importación de la biblioteca para c y fmt.
Ahora funciona. Gracias por la ayuda, y perdón por la confusión.

<%@ 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 parece haber trabajado en torno al problema mediante la extracción del dominio de nivel superior de la jarra, modificándolo, colocándolo en el directorio WEB-INF de la guerra, y añadiendo una entrada a su web.xml así:

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

Al final, cambió al 1.1 declaración:

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

problema está resuelto sblundy. Gracias por tu ayuda. ¡Rock! –

+2

En realidad, solo fue suficiente arreglar el URI taglib. Molestar con TLDs sueltos es un gran mito y realmente no debería hacerse. – BalusC

+0

El enlace "This guy" está roto –

1

sólo funcionó para mí, añadiendo "_rt" a TagLib URL como esta:

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

lo encontré en this article

divertirse!

+1

Tiene una versión JSTL obsoleta (ese artículo también es antiguo). Actualiza JSTL. Lea [nuestra página wiki JSTL] (http://stackoverflow.com/tags/jstl/info). – BalusC

2

Tuve el mismo problema.

cambié <% prefijo @ taglib = "FMT" URI = "http://java.sun.com/jstl/ fmt" %> a <% prefijo @ taglib = uri "FMT" = "http://java.sun.com/jstl/ fmt_rt"%> ¡y funcionó para mí!

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

funciona para mí.