我必须更新具有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参数何时可用以下是
将表单数据填充到之前必须满足的条件
参数集:
并且帖子表单数据不包含在参数集中,
数据必须仍然可以通过请求对象的
输入流。如果满足条件,则邮寄表格数据将不再
可直接从请求对象的输入中读取
流。