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}"
コードは正常に機能するはずです。このようにしてみてください:
<%@ 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を使用しています。
次のコード行をページの先頭に追加する必要があります。そうすれば、コードは完全に機能します。 <%@ taglib prefix = "fmt" uri = "http://Java.Sun.com/jsp/jstl/fmt"%>