使用@POST时,使用@QueryParam休息读取总是返回0

时间:2013-06-13 07:46:54

标签: jquery rest post resteasy

我将以下ajax调用发送到我的JBoss服务器(使用jQuery):

$.ajax({
  type: "POST",
  url: "http://localhost/services/v1/online/123/abc",
  data: {
    "status": 100
  },
  contentType: "text/xml; charset=\"UTF-8\"",
  success: function(data, textStatus, jqXHR) { },
  error: function( jqXHR, textStatus, errorThrown ) { },
  dataType: "xml"
});

我的Java代码如下所示(@ApplicationPath和class- @Path设置正确,因此触发了以下内容):

@POST
@Path("/{docId}/{secId}")
@Produces(MediaType.TEXT_XML)
public String getSectionAccess(@PathParam("docId") String docId,
                               @PathParam("secId") String secId,
                               @QueryParam("status") long timeInMS) {
  System.out.println(timeInMS);
}

我的问题是timeInMS总是返回值0.如果我使用@GET而不是@POST,则timeInMS等于100。

我做错了什么?

以下代码:

ResteasyProviderFactory.getContextData(HttpServletRequest.class).getParameter("status");

告诉我状态的结果是“100”(一个字符串,但可以转换为long)...为什么在使用@POST(或者@PUT)时没有在timeInMS中插入值?

1 个答案:

答案 0 :(得分:0)

将注释@QueryParam("status")更改为@FormParam("status")。然后将contentType更改为application/x-www-form-urlencoded

或者将url更改为http://localhost/services/v1/online/123/abc?status=100