Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format a date and display it using JSTL and EL

How do I format and display a Date object in a JSP, most preferably using JSTL and EL but any other solution is welcome? I can not change the bean object.

I have the following class:

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

I am trying to display the date in this object in a JSP page. When I do this <c:out value="${person.myDate} /> it prints this in the page. 2013-06-08 00:00:00.0

What I want to do is remove the time portion of the date and format it to MM-dd-yyyy.

I tried this:

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

and it gave me the following error

Unable to convert string '${myDate}' to class java.util.Date for attribute value: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager

Then I tried the following:

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

and I got:

Unparseable date: "${myDate }"

like image 948
Susie Avatar asked May 29 '13 20:05

Susie


1 Answers

Your code should normally work. Try like this:

<%@ 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}

It usually doesn't work if you have wrong JSTL declarations to match your Servlet/JSP version. Make sure you read this before trying anything else: How to Reference and Use JSTL in your Web Application.

If you don't know exactly your environment, you can perform some tests to find out the versions although a simple ${1 + 2} written in your JSP should be a good indicator of the JSP version. If you see 3 in your browser then you are using JSP 2.x, if you see the string ${1 + 2} instead then you are on JSP 1.x.

like image 171
Bogdan Avatar answered Nov 14 '22 06:11

Bogdan