0

我将以下 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”(一个字符串,但可以转换为长整数)......为什么在使用@POST(或@PUT)时没有将值插入到timeInMS中?

4

1 回答 1

0

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

或更改urlhttp://localhost/services/v1/online/123/abc?status=100

于 2013-06-13T13:09:23.590 回答