2011-01-17 27 views
2

私は一定の期間内に購入をリストアップするPlayアプリケーションを持っています。ユーザーが日付の間隔を指定しない場合は、デフォルトで昨年の購入を表示する必要があります。これは私のコントローラでこれらの2つの方法で行われますPlayでURLの日付の書式設定を制御するにはどうすればよいですか?

public static void show(String id) { 
    Date today = new Date(); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(today); 
    calendar.add(Calendar.YEAR, -1); 
    Date oneYearAgo = calendar.getTime(); 

    showWithInterval(id, oneYearAgo, today); 
} 

public static void showWithInterval(String id, Date fromDate, Date toDate) { 
    List<Purchase> purchases= Purchase.find(id, fromDate, toDate); 

    render(purchases, fromDate, toDate); 
} 

はしかし、これはこのように見ているURLを生成します:http://localhost:9000/purchases/showwithinterval/10076430719?fromDate=ISO8601:2010-01-17T19:41:20%2B0100&toDate=ISO8601:2011-01-17T19:41:20%2B0100

これは私がapplication.confdate.formatプロパティで指定した日付フォーマットに準拠していません。 。この形式は、(${params.fromDate}を使用して)日付を印刷して、ユーザーが他の間隔を表示するように編集できるようにするために、単に使用できません。私は文字列であるので、ビューでそれらをフォーマットすることはできません。

誰でもこれを解決する方法を知っていますか?

編集:固定タイプミス

答えて

1

あなたの方法レンダリングにfromDateから他のtoDateまでを追加します。

render(purchases,fromDate,toDate); 

をし、それらをフォーマット:

${fromDate.format()} 

プレイがあなたの形式で日付をフォーマットしますapplication.confの設定

+0

URLに影響があることを確かめてください – niels

+0

形式が次の場合:application.confのMM-dd-yyyyです。urlはfromDate:fromDate = 01-18-2011になり、再生できますこれをバインドします – Ricardo

+0

renderメソッドでtoDateとfromDateを配置すると表示の問題は解決しますが、URLはまだ面白く見えます。 application.confのdate.formatプロップがyyyy-MM-ddであっても、URLの形式はISO8601:2010-01-17T19:41:20%2B0100になります。 – mranders

0

URLSの日付パラメタのフォーマットに影響を与えるいくつかの方法があります。プレイ1.1以降

  1. play.data.binding.As注釈

    あなたはこの注釈で結束ルートやデータに影響を与えることができます。次のように単にあなたの日付パラメータに@Asアノテーションを追加:注釈について

    public static void submit(@As("dd/MM/yyyy")Date myDate) 
    { 
        Logger.info("date %s", new SimpleDateFormat("dd-MM-yyyy").format(myDate)); 
    } 
    

    より多くの情報がhttp://www.playframework.org/documentation/1.1/releasenotes-1.1

  2. application.conf
    ここで見つけることができるのi18n/DateFormatのセクション

    を見てみましょう
関連する問題