2017-04-11 23 views
1

後にすべてをスキップ機能ヘッダQueryParamここアンパサンド記号

@GET 
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) 
@Path("/getxyz") 
public Response getXyz(@QueryParam("input") String input){ 

SomeClass abc = someService.getValue(input); 

であり、入力値は、同様に、アンパサンドを含むことができます。私が直面している問題は、@QueryParamを使用しているときにアンパサンド記号の後のすべての値をスキップすることです。

例:ブラウザ側から再度入力がtest&testの場合は、testと解釈されます。

また、encodeURIComponent(input)を使用してクライアント側の入力をエンコードしています。

どのような考えですか?

答えて

2

クエリparamsを&記号でsepratedされている、それはあなたのケースで&後に第2のテストをスキップした理由のthats。 testの両方が必要な場合は、URLにtest and testとして送信してください。

What is the proper way to seperate query string parameters in a url?、照会パラメーターの送信方法もお読みください。

+0

しかし、 '&'を 'and'に変更すると入力クエリ自体が変更されます。クエリパラメータを解析するより良い方法はありますか? – ajup

+0

本当に 'test&test'として渡す必要がありますか? –

+0

の場合は、key = "test&test"のように送信してください。つまり、値を二重引用符で囲んでください。 –

3

アンパサンド記号をブラウザ側でエンコードする場合は、test&testの代わりにtest%26testを使用してください。あなたが言ったようにencodeURIComponentを使用する場合は、そのエンコーディングの後にクライアント側でクエリのパラメータを表示してください。それはtest%26test

+0

はい、テストとして表示されます%20%26%20テスト – ajup

1

です。最終的に、入力要求を解析するために、@RequestParamを使用するSpring MVCフレームワークを使用してこの問題を解決できました。正確にtest%20%26%20testtest & testをデコードします。

この方法は、プロジェクトでJerseyと一緒にSpring MVCを使用している場合に便利です。あなたの貴重な提案を皆様にお寄せください!

関連する問題