我必须更新具有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();
    }

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-Type标头作为application/x-www-form-urlencoded。我认为Firefox的Poster有问题。谁能建议我还有其他方法可以验证代码,还是可以信任前两个REST客户端?

最佳答案

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

编辑:您只能在POST中使用FormParams:

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


  • 该请求是HTTP或HTTPS请求。
  • HTTP方法是POST。
  • 内容类型为application / x-www-form-urlencoded。
  • servlet已对请求对象上的任何getParameter方法族进行了初始调用。如果不符合条件
    并且帖子表单数据不包含在参数集中,
    数据必须仍然可以通过请求对象的
    输入流。如果满足条件,则邮寄表格数据将不再
    可直接从请求对象的输入中读取
    流。
  • 07-24 09:36
    查看更多