0

我在 JAX-RS 中有以下 POST 响应。

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

接收到的参数可以被调用nameage或许多其他的东西。我已将其标识为key代码中(显然它不起作用)。

如何检索该参数的名称?

谢谢

4

1 回答 1

0

接收到的参数可以称为姓名或年龄或许多其他内容。我已将其标识为代码中的关键(显然它不起作用)。

正如您已经发现的那样,它不起作用,因为@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
}
于 2016-09-13T14:29:15.873 回答