使用Jquery AJAX使用JSON参数的Spring REST Web服务

问题描述 投票:1回答:2

我正在尝试学习Spring Framework,为我未来的项目创建RESTful Web服务。到目前为止,我已经尝试使用GET并使用简单的Ajax请求使用它没有问题。我也尝试使用查询字符串来输入参数。

截至目前,我正在尝试创建一个接收POST请求的端点。我已经研究了好几天但是没有用(对于像我这样的初学者来说,有些因素太复杂了)。

这是我的简单代码:

Java Spring

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String testString(String jsonString)
{
        System.out.println(jsonString);
        return jsonString;
}

阿贾克斯

  var data = {"name":"John Doe"}
  $.ajax({
              url: "http://localhost:8080/springrestexample/test",
              method:"POST",
              data:data,
              dataType:'text',
              success: function( data ) {
                 alert(data);                                 
              },
              error: function( xhr, status, errorThrown ) {
                  alert("Error:" + errorThrown + status);
              }
      });

我试过调试tomcat,好像我没有在testString上传递任何值。我需要在我的java代码上添加一些东西吗?

java jquery json ajax spring
2个回答
0
投票

@RequestMapping只将您的方法映射到某个网址。要访问数据,您需要@RequestParam注释来获取数据,例如:

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public String testString(@RequestParam("name") String jsonString)
{
    System.out.println(jsonString);
    return jsonString;
}

有关更多示例,请参阅this手册。


0
投票

由于您是从ajax请求将数据传递到body中,因此您需要从中检索

@RequestBody

像这样在参数之前添加这个注释;

public String testString(@RequestBody String jsonString) {
    System.out.println(jsonString);
    return jsonString;
}

你完成了:)

© www.soinside.com 2019 - 2024. All rights reserved.