2016-09-13 7 views
0

私はJAX-RSで次のPOST応答を持っています。Java(JAX-RS)のPOST要求で未知のパラメータ名を受信

@POST 
@Path("/save") 
public Response saveS(@FormParam(key) String value) throws SQLException {   
    return Response.ok("TODO", MediaType.APPLICATION_JSON).build(); 
} 

受信されたパラメータはnameまたはageや他の多くのものと言えるでしょう。私はコードでkeyと認識しています(明らかに動作しません)。

どのようにしてそのパラメータの名前を取得できますか?

おかげ

答えて

1

受信されたパラメータは、名前や年齢や他の多くのものと言えるでしょう。私はコードの中でそれをキーとして特定しています(明らかに動作しません)。

あなたはすでにそれは、対応するHTMLフォームで定義されている@FormParamは、フォームパラメータの名前を期待しているので、それがそのように動作しませんがわかったよう。つまり、どのフォームパラメータをこのメソッドのパラメータ(value)に割り当てるかを知っておく必要があります。

FormParamパラメータ

は、メソッドパラメータの値は、要求エンティティ本体にフォームパラメータから抽出されることを指定し:ここ

JAX-RS specificationから抽出@FormParam注釈の定義であります。アノテーションの値は、フォームパラメータの名前を識別します。注釈ターゲットはフィールドとメソッドでの使用を許可していますが、仕様ではリソースメソッドのパラメータへの使用のみサポートする必要があることに注意してください。

そして、次のようにそれに加えて、あなたのリソースメソッドに@Consumes注釈を追加する必要があります

@POST 
@Path("/save") 
@Consumes("application/x-www-form-urlencoded") 
public Response saveS(@FormParam(key) String value) throws SQLException {   
    return Response.ok("TODO", MediaType.APPLICATION_JSON).build(); 
} 

アップデート: 私は自分自身を試していないが、あなたは私を試してみて、伝えることができますそれが動作すれば。ここでは、すべてのフォームフィールドを解析できるようにすべてのパラメータを取得する必要があります。

@POST 
@Consumes("application/x-www-form-urlencoded") 
public void post(MultivaluedMap<String, String> formParams) { 
    // parse the map here 
} 
+0

FormParamを使用しなくても、それを行う方法はありませんか? – Arturo

+1

それがあなたを助けるかどうかわからない、私は答えを更新しました。私は答えを修正するように見て、私にフィードバックをお願いします。 – ujulu

関連する問題