带泽西的JAX-RS:将表单参数传递给PUT方法以更新资源

Ami*_*tel 5 java rest jax-rs jaxb jersey

我必须更新具有firstName和lastName的Person记录.用户应该能够从html表单更改它,并在提交时应该更新它.

这是我的代码.

    @PUT
    @Path("/{userId}")
    public Response updatingResource(@FormParam("firstName") String firstName, @FormParam("lastName ") String lastName , @PathParam("userId") String userId){
        System.out.println(firstName);
        System.out.println(lastName);
        return Response.ok().build();
    }
Run Code Online (Sandbox Code Playgroud)

SOP语句打印为null.我一直在使用Mozilla Firefox的Poster插件发送PUT请求.

我也尝试通过注释它@Consumes(MediaType.APPLICATION_FORM_URLENCODED)但仍然为每个值打印null.

如何编写和调用接收这三个值的PUT方法.我偶然发现并发现有人要求使用JSON或XML.我该如何使用JSON?如果有人帮助我编写REST方法来更新资源,我会非常感激


如果我使用Firefox的RESTClient和Google的rest-client发送PUT请求,我可以获取表单参数.这个工具都有像我放置的身体部分firstName=Amit&lastName=Patel.另外我添加标题Content-Typeapplication/x-www-form-urlencoded.我认为Firefox的海报是错误的.任何人都可以建议我有任何其他方式我应该验证代码或我可以信任前两个REST客户端?

Tar*_*log 7

除了使用注释方法之外@Consumes(MediaType.APPLICATION_FORM_URLENCODED),还必须application/x-www-form-urlencoded作为内容类型发送.你做了吗?

编辑:您只能将POSTParams用于POST:

SRV.4.1.1何时可用参数以下是在将表单数据填充到参数集之前必须满足的条件:

  1. 该请求是HTTP或HTTPS请求.
  2. HTTP方法是POST.
  3. 内容类型是application/x-www-form-urlencoded.
  4. servlet对请求对象上的任何getParameter方法系列进行了初始调用.如果不满足条件且后表单数据未包含在参数集中,则后续数据仍必须通过请求对象的输入流对servlet可用.如果满足条件,则表单数据将不再可用于直接从请求对象的输入流中读取.