2011-06-29 8 views
3

これはおそらく愚かな質問です(私はPlay Frameworkのnoobのビットです)。しかし、実際にはそれに運が必要ありません。Playフレームワークを使用した日付のコントローラメソッドの呼び出し

public static void viewDay(@As("dd-MM-yyyy") Date date) {

ウェブで/ day?date = 22-05-2011のようなものにアクセスしたときにうまくいくのはどれですか。

私の問題は、新しいレコードが追加されたときに、保存メソッドがこのページにリダイレクトされるようにすることです。通常の状況では、このようなことはうまくいきますが、私はここに日付を渡したいので、私はいくつかの問題を抱えています。

私の最初のアイデアは、ちょうどこれが「ISO8601%3A2011-06-30T00の線に沿って何かになり (私は他のデータ型で行うことができましたと)ちょっと道

viewDay(someDate);
内に沿って日付オブジェクトを渡すことでした%3A00%3A00%2B0100 "がURLに終わります。私はそれが(たとえそれが理想ではないにもかかわらず)うまくいけばこれで生きることができますが、遊びはそれを解読できるようには見えず、代わりに現在の日付を使用するようにデフォルト設定しています。

私はまた、@Asが予想しているようにフォーマットされた文字列として日付を渡そうとしましたが、これはいくつかの型エラーを引き起こしました。 @As( "dd-MM-yyyy")の削除も役立たないようです。

私の考えでは、これは本当にやりにくいものではないようです(ただし、私はPlayとJava Web Frameworkの全般的な悩みを述べています)ので、どんなポインタでも大きな助けになるはずです。

おかげで、 カール

私のコントローラのラフ概要:

 
public class TimeRecordController extends Controller { 
    public static void index() { 
     //do stuff 
    } 
    public static void viewDay(@As("dd-MM-yyyy") Date date) { 
     //Do stuff (works fine when accessed via web) 
     //If page is arraived at via the save though url shows UTC date: "ISO8601%3A2011-06-30T00%3A00%3A00%2B0100" 
     //And play is unable to read the correct date 
    } 
    public static void save(Stuff here, Date rtn){ 
     //do validation/saving 
     viewDay(rtn); 
    } 
} 
+0

問題は表示されていません。両方の方法のコードが必要です –

答えて

1

だけでレンダリング(日付)を使用してテンプレートを呼び出すか、あなたの日付と日付を期待する他のコントローラメソッドを呼び出しますオブジェクト。あなたのJavaコードで日付を文字列に変換しないで、パラメータバインディング中に自動的にハンドルを再生します。ビューテンプレート内の特定の形式でDateオブジェクトをレンダリングする必要がある場合は、application.confでグローバル設定を行い(date.formatをスキャンする)、$ {dateを使用してテンプレート内の日付をレンダリングします。 format( 'yyyy-MM-dd')}を選択します。

これがあなたの質問に答えることができない場合は、コントローラコードを投稿してください。これにより、達成したいことのより良い画像が得られます。

+0

こんにちは、私に戻ってくれてありがとう:) コントローラの概要が非常にわかりました。基本的には、viewDayページ上のフォームはsave()に送信し、save-yのものは保存してからviewDay()を呼び出して日付オブジェクトを呼び出して、そのページをもう一度表示します。問題は、このように日付が渡されたときに、私が言うことができる限り、Playはそれを読み取ることができないように見えるため、渡された日付の代わりに現在の日付を使用するように戻ります。 もう一度おねがいします – Carl

0

Javaユーティリティ日付またはジョーダ日付ですか?

返される日付はISO8601形式です。 Playでは、デフォルトのISO 8601カレンダーシステムのjoda-timeが使用されます。

関連する問題