2016-05-04 32 views
1

HTTPクエリパラメータとして列挙値のリストを渡したいとします。サーバー側のエントリポイントは次のようになります。HTTPクエリパラメータとしてのenum値のリストの受け渡し

@GET 
@Path("/getMyResult") 
public MyResultType getMyResult(@QueryParam("me") final List<MyEnum> myEnums) 

これは変更できません。 MyEnumには、値MyValue1,MyValue2,MyValue3およびMyValue4が含まれているとします。 (MyResultTypeは、この質問には関係ありません。)一つの値だけを渡すと、以下のように、(私にとっては少し奇妙である)正常に動作します:

http://localhost/getMyResult?me=MyValue1 

しかし、要素のリストをこのように渡す:

http://localhost/getMyResult?me=[MyValue1,MyValue3,MyValue4] 

またはこのよう:

http://localhost/getMyResult?me=MyValue1,MyValue3,MyValue4 

またはこのよう:

http://localhost/getMyResult?me=["MyValue1","MyValue3","MyValue4"] 

が動作しない、それがこの(最初のオプションにエラーメッセージ)のような例外何かをスロー:

RESTEASY001720: Unable to extract parameter from http request: javax.ws.rs.QueryParam(\"me\") [...] 
No enum constant com.mycompany.myapp.MyEnum.[MyValue1,MyValue3,MyValue4] 

誰がどのようにHTTP GETクエリパラメータとしてMyEnum要素のリストを渡すことを教えてもらえますか?ありがとうございました!

+1

あなたは 'HTTPを試してみました:// localhost /をgetMyResult私= MyValue1&私= MyValue2&私= MyValue3'? – khelwood

+0

POSTメソッドを使って送ることができるので、Javaではアノテーションのみを変更して@QueryParamを使用しないでください – MaxG

+0

@khelwood:ヒントのおかげで;それは解決策です(Jordi Castillaも提案しています) –

答えて

3

この場合(およびその他の場合はListを渡す必要があります)、各要素のパラメータの名前を挿入する必要があります。このようにして

http://localhost/getMyResult?me=MyValue1&me=MyValue3&me=MyValue4 
+0

@CsabaFaragó喜んで助けてください! :) –

+0

@CsabaFaragó私は警告していませんが、URLの長さには注意してください。 Enumに複数の値を含めることができる場合は、最大長を超えることができます! –

+0

警告ありがとうございます! –

関連する問題