web-dev-qa-db-ja.com

日付をフォーマットし、JSTLとELを使用して表示します

DateオブジェクトをJSPでフォーマットして表示するにはどうすればよいですか。最も望ましいのは、JSTLとELを使用することですが、他のソリューションも歓迎します。 Beanオブジェクトを変更できません。

私は次のクラスを持っています:

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

このオブジェクトの日付をJSPページに表示しようとしています。これを<c:out value="${person.myDate} />すると、ページに印刷されます。 2013-06-08 00:00:00.0

私がやりたいのは、日付の時間部分を削除し、それをMM-dd-yyyyにフォーマットすることです。

私はこれを試しました:

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

そしてそれは私に次のエラーを与えました

文字列 '$ {myDate}'を属性値のクラスJava.util.Dateに変換できません:Java.lang.IllegalArgumentException:プロパティエディターがPropertyEditorManagerに登録されていません

それから私は以下を試しました:

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

そして私は得た:

解析できない日付: "$ {myDate}"

10
Susie

コードは正常に機能するはずです。このようにしてみてください:

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

サーブレット/ JSPのバージョンと一致するJSTL宣言が間違っている場合、通常は機能しません。他のことを試す前に、これを必ず読んでください: WebアプリケーションでJSTLを参照して使用する方法

環境が正確にわからない場合は、 バージョンを見つけるためにいくつかのテストを実行できます ただし、JSPに記述された単純な${1 + 2}はJSPバージョンの良い指標になるはずです。ブラウザに3が表示されている場合は、JSP 2.xを使用しています。代わりに、文字列${1 + 2}が表示されている場合は、JSP1.xを使用しています。

20
Bogdan

次のコード行をページの先頭に追加する必要があります。そうすれば、コードは完全に機能します。 <%@ taglib prefix = "fmt" uri = "http://Java.Sun.com/jsp/jstl/fmt"%>

0
Manoj Kumar