2013-05-29 13 views
9

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

私は以下のクラスを持っている:

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"/> 

をし、それは私に次のエラー

属性値のクラスjava.util.Dateに '$ {MyDateに該当}' 文字列を変換することができません与えます。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に該当}"

答えて

18

あなたのコードは正常に動作するはずです。

<%@ 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宣言が間違っていると、通常は機能しません。何かを試す前にこれを必ず読んでください:How to Reference and Use JSTL in your Web Application

ご使用の環境がわからない場合は、という単純なメッセージがJSPバージョンの適切な指標になるはずですが、you can perform some tests to find out the versionsです。ブラウザに3が表示されている場合は、JSP 2.xを使用しています。代わりに文字列${1 + 2}が表示されていれば、JSP 1.xになっています。

+0

文字列 '$ {myDate}'をクラスjavaに変換できません.util.Date " – Susie

+0

間違ったJSTL宣言については、私がフォーマットしようとしなければ、私のページに日付が表示されます。 jstl宣言がサーブレット/ JSPバージョンと一致することを確認するには十分ですか? – Susie

+0

いいえ、JSPのバージョン間でタグが変更されました。彼らは文字列(EL)を取得してそれを評価していました。次に、より高いJSPバージョンでは、サーブレット・コンテナは評価を行い、評価対象の文字列ではなく、そのオブジェクト・タイプを受け取るタグにオブジェクトを送信します。タグを混在させると奇妙なエラーが発生します。 1つのタグが機能していれば、残りのタグは正常であるとは限りません。 – Bogdan

0

はあなたのページの先頭に次のコード行を追加する必要があり、あなたのコードは完璧に動作します。 <%@ taglib接頭辞= "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%

関連する問題