Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

タグライブラリにつきまして

タグライブラリの中で下記のようにnewするとエラーになるのですが、どうにかできないもんでしょうか?
ちなみtemp.dateはlong型です。。

<c:forEach var="temp" items="${list}">
<tr>
 <td>${new Date(temp.date)}</td> 
</tr>
</c:forEach>

エラー:デフォルトの名前空間が指定されていない時には、関数 Date はプリフィクス付きで使用しなければいけません

3

回答

95243

閲覧

3件の回答

評価

0

タグライブラリではなく、EL式です。
で、答えは「できません」。

スクリプトレット内で、
ページスコープからtempを取り出すのが早いかと。
<%
XXX temp = (XXX) pageContext.getAttribute("temp");
out.println(new java.util.Date(temp.date));
%>
のようなコードになる。

評価

0

ご助言ありがとうございました!
やはりスクリプトレットを使うしかないんですね。
可読性などを考慮するとタグやELを使いたかったんですが、、、

例のように出力が一つだけのものならいいですが、例えば、

<c:forEach var="temp" items="${list}">
<tr>
 <td>${temp.name)}</td> 
 <td>${temp.address)}</td>
 <td>${temp.id)}</td>
 <td>${temp.phone)}</td>
 .....
</tr>
</c:forEach>

などとたくさんの要素を出力するとき、上記のように出来るのに
new Date(temp.date)
をしたいがために、全てをスクリプトレット内の記述に直さなければ駄目なのでしょうか??

評価

0

別に、new Dateしたいところだけでいいじゃん。
つーか試せばいいじゃん。

ついでに言っておくと、EL式で出力するなら、
XSSに気をつけたほうがいいよ。だれもエスケープしてくれないんで。

さらに言うと、new DateなんてJSPの中じゃなくて、
プレゼンテーション層の手前でやるべき。それがどうしても嫌なら、EL式内でユーザ定義の関数を使えるから、
${fn:date(temp.date)}
みたいな書き方もできる。そのやり方は「el式 関数」でググレカス。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。