2012-07-02 6 views
11

で使用アレイ[文字列]私はこのようなURLを生成します:?プレイフレームワーク2:ルート

/写真をタグ= TAG1、TAG2、TAG3

ルートファイル:

GET  /photo controllers.Photos.list(tags:Array[String] ?= "") 

は私がプレイコンソールでこのエラーを得た:

ありません配列型のQueryStringバインダーが見つかりました[String]

これを達成する最も良い方法は何ですか?

ありがとうございました。

+0

私は理解していることから、(タグのタグとタグ=タグ2&タグ= tag3 ...それは少し冗長ですが、仕様はそのような繰り返しを可能にする –

答えて

10

私はあなたが共通Stringを使用して、あなたのcontroller

ルートでArrayへの変換について世話をするべきだと思います。Javaで

GET  /photo controllers.Photos.list(tags:String ?= "") 

public static Result list (String tags){ 
    String[] tagsArray = tags.split(","); 
    // do something with tagsArray 
    return ok(); 
} 
+0

それは私の最初のアイデアでした。私はこのソリューションを使用します。 – mcarrolle

+4

@Ahmed Aswaniによって記述された方法は、HTTPでこれを行う「正しい」方法です。 – sven

16

プレイ値がクエリ の同じ名前の文字列またはポストデータにある場合、配列の/リストにバインドされます。

これも動作するように思われる:

This route: http://localhost/controller/{id} 

このURL:http://localhost/controller/1?id=2&id=3

は、ID controller(int[] id)に結合する - > {1、2、3}

転記ID = 2 & ID = 3も配列にバインドされます。リストの代わりに、アレイは動作するはずを使用

https://groups.google.com/forum/?fromgroups#!topic/play-framework/c5kB6wmcF8Q
10

参照。

は、Javaを使用している場合、それはこのように動作します:あなたはlong配列を渡したい場合はさておき、この作品のよう

GET  /photo controllers.Photos.list(tags: java.util.List[String]) 
+0

私はこれを数時間探しました! List [String]を使用することはできません。それはデフォルトでスカラ型を使用します! 次の例外が表示されます。 タイプの不一致。 が見つかりました:リスト[文字列](scala.collection.immutable内) 必須:リスト[_](java.util内) 完全なパッケージ名を使用するのが正しい方法です –

2

:と

GET /photo controllers.Photos.list(tags: java.util.List[java.lang.Long])

をコントローラ機能を引数としてList<Long> tagsとする。

関連する問題