我在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
(显然它不起作用)。
如何检索该参数的名称?
谢谢
接收到的参数可以被称为名称或年龄或许多其他东西。我已经将其识别为代码中的关键(显然它不起作用)。
正如您已经发现的那样,它不会以这种方式工作,因为@FormParam
期待表单参数的名称,因为它在相应的HTML表单中定义。这意味着您应该知道您想要将哪个表单参数分配给方法的参数(在本例中为value
)。
下面是从JAX-RS规范中提取的@FormParam
注释的定义:
<标题> 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
}