2011-07-20 23 views
2

経路が見つからない以下のシナリオを解決できないようです。 、PLayフレームワーク複数のパラメータを使用したルーティングの問題


GET  /reports/items/{date}       Reports.items(field:'all') 

コントローラは、@ {アイテム(日付)}や@ {アイテム(日付を使用している


public static void items(@Required Date date, String field){ 
... 
} 

ビューで定義:

は、次のエントリで自分のルートファイルを持っ'すべて')}

URLはに変換:すべての

= 9000 /レポート/アイテム/ 19-07-2011フィールド: localhostの?

私はいつもとは見られない得るように見える:


tried the following route 
GET  /            Reports.index 
GET  /reports/items/{date}        Reports.items 

どのように私ができるルートとデフォルトのフィールドに「すべて」に任意のアイデアそれが提供されていない場合は?私はあなたが必要なものと考えてい

+0

なぜコントローラメソッドに名前が付けられていないのですか?items?どのように経路がatmItemsを見つけることができますか?実際には – Mike

+0

です。これはコピー&ペーストの間違いでした。 – emt14

答えて

3

はこれです:

GET  /reports/items/{date}      Reports.items(field:'all') 
GET  /reports/items/{date}/{field}    Reports.items 

まずシステムは、(フィールドのデフォルト値として「すべて」を使用します)日付のみで要求と一致します。

フィールドが追加されているため、一致しない場合、両方のパラメータがコントローラにマップされる2番目のGETに移動します。

+0

@ {items(date)}が最初のルーティング行と一致せず、フィールドのデフォルト値が 'all' – emt14

+0

であるため、コントローラに2つのフィールドがあるため、まだ理解できません。それは@ {items(date、field)}です。 Routesで割り当てられる自動値は、リダイレクトを容易にするためのシンタックスシュガーです。 –

関連する問題