2010-07-28 26 views
8

Estoy utilizando JSP para la vista y Spring MVC 3.0 para el controlador. En mi JSP, quiero mostrar la fecha y hora actuales, por el que tengo el siguiente código ...Expresión anidada en JSP/JSTL

<c:set var="dateTimeDisplayFormat" value='<spring:message code="display.dateFormat" />'/> 

<c:set var="currentDateTime" 
    value='<%= new SimpleDateFormat(${dateTimeDisplayFormat}).format(new Date()) %>' 
    scope="page" /> 

Ahora, el problema es JSTL no reconoce mi etiqueta anidada para SimpleDateFormat de instancias. Deseo pasar la cadena de formato (Como se obtiene de la variable 'dateTimeDisplayFormat') al constructor SimpleDateFormat.

¿Puede alguien aconsejar cómo escribir el constructor anidado para SimpleDateFormat en la instrucción c: set anterior?

Gracias en previsión!

Respuesta

16

<c:set> puede tomar su valor del contenido de la etiqueta, en lugar de a partir del atributo value:

<c:set var="dateTimeDisplayFormat"> 
    <spring:message code="display.dateFormat" /> 
</c:set> 

<c:set var="currentDateTime" scope="page"> 
    <%= new SimpleDateFormat(${dateTimeDisplayFormat}).format(new Date()) %> 
</c:set>  

Mejor aún, no debería ser necesario <c:set> en absoluto, ya que ambos <spring:message> y <fmt:formatDate> puede almacenar en sus resultados las variables para usted:.

<spring:message code="display.dateFormat" var="dateTimeDisplayFormat"/> 
<fmt:formatDate pattern="${dateTimeDisplayFormat}" var="currentDateTime" scope="page"/> 
+0

Muchas Gracias Skaffman, pero la primera solución que usted propone, no funcionó :(me da una excepción
PWC6197: Se produjo un error en la línea: 27 en el archivo jsp: /WEB-INF/views/common/header.jsp PWC6199: Generado error servlet: Error de sintaxis en el símbolo "$", AssignmentOperator espera después de esta señal Gracias por abrir mis ojos al segundo enfoque, pero con eso, la fecha ahora aparece en la página, con todo el código restante siendo el mismo, es decir. PaiS

+0

¡OMG! Tan tonto de mí, no había incluido la biblioteca de formato JSTL en la parte superior de la página, y por lo tanto, el segundo enfoque no funcionaba. Ahora se ve la fecha perfectamente, y muchas gracias Skaffman por el enfoque ordenado! – PaiS

+1

la respuesta es correcta en su espíritu, pero el error de sintaxis proviene de mezclar scriptlets con el. Este es el código literal de java (argh, no debería ocurrir en un JSP), por lo que la variable el puede (pero no debe) accederse de esta manera: '<% = new SimpleDateFormat (pageContext.getAttribute (" dateTimeDisplayFormat ")). formato (nueva Fecha())%> ' –