2017-11-03 6 views
0
public Response getCustomerByName(
@PathParam("customerName") String customerName) 

問題
私のようにCUSTOMERNAMEを渡しています:(URLとしてエンコードされます。スタック%20overflowスタックオーバーフロー。私は、Javaコードでデコードされた文字列(スタックオーバーフロー、%20なし)として受け取りたい。ジャージー:デコード文字列@PathParamスペースが含まれている中、それ

私はを試してみました何


これは完全に正常に動作しますが、私はそれを行うための、より一般的な方法ではないと感じました。

URLDecoder.decode(customerName, "UTF-8"); 

は、より一般的な解決策が必要: は、私は同様のAPIの残りの部分で同様の変更をしたいので、各APIでURLDecoderのを使用して負担となっています。アプリケーションレベルでこのデコードを行うために私が従うことができる一般的なプラクティスはありますか? (私がリクエストを受信したとき@PathParamが既に復号化された)

+0

それは(WebLogic Serverで)javadocのあたりのように動作し、はURIEncoding = "UTF-8" server.xmlの – Marco

+0

こんにちはマルコを設定しよう、 ありがとうございました。私はこの解決策を試してみましょう。 – Pralhad

答えて

0

自動「デコード」しなければならないとPathParamのjavadocのjavadocので述べたように、あなたはURLDecoder.decode(customerName, "UTF-8");

を使用して明示的なデコーディングを必要としません:

エンコードされたアノテーションを使用してこれを無効にしない限り、値はURLデコードされます。

私はちょうど下に検証し、Tomcatを使用している場合は

@GET 
@Produces(value = { "text/plain"}) 
@Path("{customerName}") 
public Response getCustomerByName(@PathParam("customerName") String customerName) { 
    System.out.println(customerName); 
    return Response.ok().entity(customerName).type("text/plain").build(); 
} 
+1

ありがとうございます。それは、アプリケーション(フィルタ/リスナー)のどこかのロジックをデコードすることが上書きされると私に思い出させます。 – Pralhad

関連する問題