0

主页.jsp:

<script type="text/javascript">
var startZArray = new Array();

function add()
{
  var startZ = $('#startZ').val();
  startZArray.push(startZ);
}

function submitP()
{
  $.ajax({
  type: "POST",
  url:"/horn/rest/main/schedule",
  data: startZArray,
  success:function()
  {alert('worked');}
  });
}
</script>

主页.java

  @POST
  @Path("/schedule")
  public void tigerMessage(
      @Context final HttpServletResponse response,
      @Context final HttpServletRequest request) throws Exception
  {
    String[] myParams = request.getParameterValues("startZArray");
    System.out.println(myParams);
  }

不幸的是 myParams 打印出 null。我知道里面 add startZArray 正在被填充。但我不确定 data: startZArray 是否是传递它的正确方法。我也知道 Jersey url 被点击了,因为我看到 null 打印出来了。有没有人有任何想法?

编辑:

当我做:

[~] curl -i -X POST -d "{\"startZArray\":\"testMessage\"}" http://localhost:8080/horn/rest/main/schedule
HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Date: Wed, 24 Apr 2013 20:15:18 GMT

我仍然得到 null 所以我认为我的 java 代码有问题?

编辑2:

我更新了调试 submitP() 方法:

function submitP()
    {
        var myarray = ['Element 1', 'Element 2', 'Element 3'] ;
        var dataobject = {
            postvar: myarray
        } ;

        $.ajax({
                    type: "POST",
                    url:"/horn/rest/main/schedule",
                    data: dataobject,
                    success:function()
                    {
                        alert('worked');
                     }
                });
    } 

当我在 firebug 中运行代码时,输​​出帖子看起来像这样:

Paramaters:
postvar[]   Element 1
postvar[]   Element 2
postvar[]   Element 3

Source:
postvar%5B%5D=Element+1&postvar%5B%5D=Element+2&postvar%5B%5D=Element+3

该帖子的状态为 204,并且出于某种原因说“无内容”。

我也尝试过postvar[]简单postvar地放入 getParameterValues 方法,但没有运气。

4

2 回答 2

1

您没有使用参数发送数据,因此您无法使用startZArray

request.getParameterValues("startZArray");

尝试这个 -

$.ajax({
  type: "POST",
  url:"/horn/rest/main/schedule",
  data:{ "startZArray" : startZArray },
  success:function()
  {alert('worked');}
});
于 2013-04-24T19:55:36.320 回答
1

使用 Edit2 中的 submitP()

穿球衣试试这个

  @POST
  @Path("/schedule")
  public String tigerMessage(
      @FormParam("postvar[]") List<String> vars) throws Exception
  {
    System.out.println(vars)
    return ""
  }

更新:

另一种方法

  @POST
  @Path("/schedule")
  public String tigerMessage(
      Form form) throws Exception
  {
    System.out.println(form);
    // Then get parameters from form
    return ""
  }
于 2013-04-25T06:16:08.113 回答