java
  • jsp
  • jstl
  • 2010-07-28 6 views 8 likes 
    8

    Używam stron JSP dla widoku i Spring MVC 3.0 dla kontrolera. W moim JSP, chcę pokazać aktualny DateTime, dla których mam następujący kod ...Zagnieżdżone wyrażenie w 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" /> 
    

    Teraz problem jest JSTL nie rozpoznaje zagnieżdżony znacznik SimpleDateFormat instancji. Chciałbym przekazać ciąg formatu (As otrzymany ze zmiennej "dateTimeDisplayFormat") do konstruktora SimpleDateFormat.

    Czy ktoś może poradzić jak napisać zagnieżdżony konstruktor dla SimpleDateFormat w powyższej instrukcji c: set?

    Dzięki w oczekiwaniu!

    Odpowiedz

    16

    <c:set> może zająć jego wartość od zawartości tagu, zamiast z atrybutu 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>  
    

    Jeszcze lepiej, nie ma potrzeby <c:set> w ogóle, ponieważ zarówno <spring:message> i <fmt:formatDate> może przechowywać swoje wyniki w zmienne dla ciebie.

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

    Dziękuję bardzo Skaffman, ale pierwsze rozwiązanie, które proponuje, nie działa :(To daje mi wyjątek
    PWC6197: Wystąpił błąd w linii: 27 w pliku jsp: /WEB-INF/views/common/header.jsp PWC6199: Generated błąd servlet: Błąd składni na symboliczną "$", AssignmentOperator oczekiwanym po tym tokena Dziękuję za otwarcie moich oczu na drugie podejście, ale z tym, data jest teraz wyświetlana na stronie, a cały mój pozostały kod jest taki sam, tj. PaiS

    +0

    OMG! Tak głupi, nie umieściłem biblioteki formatu JSTL u góry strony, a zatem drugie podejście nie działało. Teraz pokazuje się doskonale i dziękuję bardzo Skaffmanowi za miłe podejście! – PaiS

    +1

    Odpowiedź jest poprawna w jego duchu, ale błąd składni pochodzi z mieszania skryptletów z el. Jest to dosłowny kod java (argh, nie powinno się zdarzyć w JSP), więc zmienna el może (ale nie powinna) być dostępna w następujący sposób: '<% = new SimpleDateFormat (pageContext.getAttribute (" dateTimeDisplayFormat ")). format (new Date())%> ' –

     Powiązane problemy

    • Brak powiązanych problemów^_^