2013-05-29 20 views
9

Jak sformatować i wyświetlić obiekt Date w JSP, najkorzystniej używając JSTL i EL, ale czy inne rozwiązanie jest mile widziane? Nie mogę zmienić obiektu bean.Sformatuj datę i wyświetl ją przy użyciu JSTL i EL

Mam następujące klasy:

import java.util.Date; 
public class Person { 
    private Date myDate; 
    public Date getMyDate() { 
     return myDate; 
    } 
    public void setMyDate(Date myDate){ 
     this.myDate = myDate; 
    } 
} 

próbuję wyświetlić datę w tym obiekcie w stronie JSP. Kiedy robię to <c:out value="${person.myDate} />, drukuje to na stronie. 2013-06-08 00:00:00.0

Co chcę zrobić, to usunąć porcję daty i sformatować ją na MM-dd-yyyy.

Próbowałem to:

<c:set var="myDate" value="${person.myDate }"/> 
<fmt:formatDate value="${myDate}" type="date" var="formattedDate"/> 

i dała mi następujący błąd

Nie można przekonwertować ciąg '$ {MyDate}' do klasy java.util.Date dla wartości atrybutu: java .lang.IllegalArgumentException: Edytor właściwości nie zarejestrowana w PropertyEditorManager

Potem próbowałem następujące:

<c:set var="myDate" value="${person.myDate }"/> 
<fmt:parseDate value="${myDate }" var="parsedDate" pattern="MM-dd-yyyy"/> 
<c:out value="${parsedDate }"/> 

i mam:

data Unparseable: "$ {MyDate}"

Odpowiedz

18

Kod powinien normalnie pracować. Spróbuj tak:

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

<fmt:formatDate value="${person.myDate}" var="formattedDate" 
       type="date" pattern="MM-dd-yyyy" /> 
${formattedDate} 

To zazwyczaj nie działa, jeśli masz źle deklaracji JSTL aby dopasować wersję Servlet/JSP. Upewnij się, że przeczytałeś to zanim spróbujesz cokolwiek innego: How to Reference and Use JSTL in your Web Application.

Jeśli nie znasz dokładnie swojego środowiska, you can perform some tests to find out the versions, chociaż prosty ${1 + 2} zapisany w Twojej stronie JSP powinien być dobrym wskaźnikiem wersji JSP. Jeśli widzisz 3 w przeglądarce, to używasz JSP 2.x, jeśli zamiast tego widzisz ciąg ${1 + 2}, to jesteś na JSP 1.x.

+0

Daje mi "Nie można przekonwertować ciągu znaków '$ {myDate}" na klasę java .util.Date " – Susie

+0

Jeśli chodzi o błędne deklaracje JSTL, moja strona wyświetla datę, jeśli nie spróbuję sformatować. Czy to wystarczy, aby potwierdzić, że deklaracje jstl pasują do mojej wersji serwlet/jsp? – Susie

+0

Nie, tagi zostały zmienione między wersjami JSP. Uzyskali ciąg (EL) i ocenili go dla siebie. Następnie w wyższych wersjach JSP kontener serwletu dokonuje oceny, a następnie wysyła obiekt do znacznika, który odbiera ten typ obiektu, a nie ciąg do oceny. Jeśli zmiksujesz tagi, dostaniesz dziwne błędy. Jeśli jeden tag działa, nie oznacza to, że reszta jest w porządku. – Bogdan

0

Należy dodać następujący wiersz kodu do nagłówka strony, a kod będzie działał idealnie. <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%>

Powiązane problemy