2011-06-19 11 views
0

FooController.java:JSPスクリプトレットでは、Spring MVC ModelMapから渡されたjava.util.Date値にどのようにアクセスしますか?

@RequestMapping(value = "/foo", method = RequestMethod.GET) 
public final String foo(HttpServletRequest request, ModelMap model) 
{ 
    java.util.Date myDate = new java.util.Date(); 
    model.addAttribute("myDate", myDate); 
    return "foo"; 
} 

foo.jsp:

<% 
    java.util.Date myUtilDate = (java.util.Date)request.getParameter("myDate"); 
    org.joda.time.DateTime myJodaDate = new org.joda.time.DateTime(myUtilDate); 
%> 

<joda:format value="${myJodaDate}" style="LL"/> 

なぜJSPはFooControllerModelMapに追加されたmyDate値を取得するために失敗するスクリプトレットのでしょうか?

答えて

1

属性は、属性(自分の宣言に応じて、またはセッション)のリクエストとして保存されていますパラメーターではありません。 コントローラメソッドの実行が終了すると、返されたビュー名に関連付けられたJSPにSpringが転送します。

したがって、JSPでは、ではなく、request.getAttribute("myDate")を使用する必要があります。 実際には、JSPでJavaコードから離れていなければなりませんが、あなたの場合は${myDate}が "myDate"という名前のリクエスト属性を見つけます。

P .:パターンに基づいてjava.util.Dateをフォーマットするための既存のタグがJSTLにあります。<fmt:formatDate>。リクエストパラメータです

0

回答が正しいと - これは属性を要求していますではなく、パラメータです。 属性はAPIを使用してコード内でリクエストすることで関連付けられます(この場合、Spring MVCはModelを使用します)。パラメータはあなたではなくサーブレットコンテナによって追加され、ブラウザによって送信されるURL/POSTパラメータを表します。

追加する唯一のことは、$ {varName}がpageContext.findAttribute( "varName")に相当することです。 とrequest.getAttribute( "varName")はpageContext.getAttribute( "varName"、PageContext.REQUEST_SCOPE)と同じです(これについてはわからない場合は、ページ、リクエスト、セッション、アプリケーションスコープのドキュメントをサーブレット+ JSP)。

関連する問題