使用Spring和Ajax从Post方法接收Rest控制器中的参数

时间:2017-10-12 08:12:46

标签: jquery ajax spring rest spring-mvc

我正在尝试使用POST方法使用AJAX将两个参数发送到我的Spring REST控制器。但是,这些参数在我的控制器中显示为@PostMapping("/txToClose") public ResultDto txToClose(HttpServletRequest request, HttpServletResponse response) throws BBException { logger.info("Called txToClose controller"); ResultDto resultDto = new ResultDto(); String txToClose = request.getParameter("txToClose"); String sno = request.getParameter("sno"); logger.info("Transactions to close :" + txToClose + ", Serial Num :" + sno); } 。如果我遗漏了任何东西,请找到代码并告诉我。

my-service.service.js
export default class MyService {
  constructor() {
    this.items = [''];
  }

  getItem() {
    return this.items;
  }
}

MyService.$inject = ['SomeOtherService'];

3 个答案:

答案 0 :(得分:0)

像这样创建类:

    class Myclass{
          private String  txToClose;
             private String    sno; 
 // getters setters
    }

并在你的方法中这样:

@PostMapping("/txToClose")  
public ResultDto txToClose(@RequestBody Myclass class ) throws BBException
{
   // your logic
}

答案 1 :(得分:0)

我认为代码中没有工作的部分是request.getParameter(),因为在json数据的情况下它无法识别参数和值。 而是使用这样的东西:

StringBuilder sb = new StringBuilder();
BufferedReader reader = request.getReader();
try {
      String line;
      while ((line = reader.readLine()) != null) {
          sb.append(line).append('\n');
      }
 } 
 finally {
        reader.close();
 }
 System.out.println(sb.toString());

在你的控制器中使用上面的逻辑来处理json请求。请参考这个link以获取进一步的想法,以便在被视为HttpServeletRequest时处理json。

答案 2 :(得分:0)

使用

解决
public ResultDto txToClose(HttpServletRequest request, HttpServletResponse response,@RequestBody ObjectNode json) throws BBException { 
    logger.info("Called txToClosecontroller"); 
    ResultDto result = new ResultDto(); 
    String txToClose= json.get("txToClose").asText(); 
}