Я пытаюсь использовать метод post ajax для отправки данных JSON в класс Java. Когда я жестко закодирую строку json, мой Java-объект получает это нормально, но когда я пытаюсь отправить строку json, созданную с помощью JSON.stringify (), я получаю все нули в моем контроллере …

Вот поток, у меня есть следующая таблица в HTML:

{amp}lt;table class="table" id="internalUnsubmittedPartRequests"{amp}gt; {amp}lt;thead{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;th id="partID"{amp}gt;partID{amp}lt;/th{amp}gt; {amp}lt;th id="quantity"{amp}gt;quantity{amp}lt;/th{amp}gt; {amp}lt;th id="applicableModel"{amp}gt;applicableModel{amp}lt;/th{amp}gt; {amp}lt;th id="queueName"{amp}gt;queueName{amp}lt;/th{amp}gt; {amp}lt;th id="issueType"{amp}gt;issueType{amp}lt;/th{amp}gt; {amp}lt;th id="controlCode"{amp}gt;controlCode{amp}lt;/th{amp}gt; {amp}lt;th id="position"{amp}gt;position{amp}lt;/th{amp}gt; {amp}lt;th id="command"{amp}gt;command{amp}lt;/th{amp}gt; {amp}lt;th id="activationDate"{amp}gt;activationDate{amp}lt;/th{amp}gt; {amp}lt;th id="flushDate"{amp}gt;flushDate{amp}lt;/th{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;/thead{amp}gt; {amp}lt;tbody{amp}gt; {amp}lt;!-- Dynamically Generated via newRequest.js --{amp}gt; {amp}lt;/tbody{amp}gt; {amp}lt;/table{amp}gt; 

И следующий javascript для чтения из этой таблицы и использования ajax для отправки его на мой контроллер:

 $('#submit_set_btn').click(function(event) { var myRows = []; var $headers = $("th"); var $rows = $("#internalUnsubmittedPartRequests tr").each(function(index) { $cells = $(this).find("td"); myRows[index] = {}; $cells.each(function(cellIndex) { myRows[index][$($headers[cellIndex]).html()] = $(this).html(); }); }); myRows.shift(); var myObj = {}; myObj.myrows = myRows; console.log(JSON.stringify(myObj)); $.ajax({ type : "POST", // contentType : "application/json; charset=utf-8", url : window.location, data : JSON.stringify(myObj), dataType : 'json', success : function(result) { //alert("success"); console.log("success"); console.log(result); }, error : function(e) { //alert("fail"); console.log("fail"); console.log(e); } }); }); 

Следующее выводится на консоль во время вызова console.log (JSON.stringify (myObj)):

 {"myrows":[{"partID":"data","quantity":"data","applicableModel":"data","queueName":"data","issueType":"data","controlCode":"data","position":"data","command":"data","activationDate":"data","flushDate":"data"}]} 

Вот класс Java, представляющий объект, который я пытаюсь создать:

 public class NewPartRequest { private String partID; private String quantity; private String applicableModel; private String queueName; private String issueType; private String controlCode; private String position; private String command; private String activationDate; private String flushDate; @Override public String toString() { return getPartID()   " "   getQuantity()   " "   getApplicableModel()   " "   getQueueName()   " "   getIssueType()   " "   getCommand()   " "   getActivationDate()   " "   getFlushDate(); } //Getters and Setters below this line 

И, наконец, класс контроллера, получающий данные JSON и использующий метод toString для отображения того, что мы получили:

 @Controller public class DistributionNewRequestController { @RequestMapping(value = "/distribution/internal/unsubmitted/new-request", method = { RequestMethod.GET }) public String newRequest() { return "new-request"; } @RequestMapping(value = "/distribution/internal/unsubmitted/new-request", method = { RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public @ResponseBody String internalRequestPost(@RequestBody NewPartRequest newPartRequest) { System.out.println("The new part request toString method: "); System.out.println(newPartRequest.toString()); String response = jsonify(newPartRequest); return response; } private String jsonify(NewPartRequest in) { Gson gson = new Gson(); String out = gson.toJson(in); return out; } } 

Метод toString () вызывается для нашего объекта NewPartRequest newPartRequest, и выводится следующее:

 The new part request toString method: null null null null null null null null 

Я застрял в этой проблеме в течение длительного времени, я не могу понять, почему я получаю значение NULL для всех моих атрибутов.

Вам нужно изменить пост Ajax, как показано ниже

data : JSON.stringify(myObj.myrows[0]),

или вы можете изменить в коде бэкэнда, как это

List{amp}lt;NewPartRequest{amp}gt;

а затем перейти от AJAX, как показано ниже

data : JSON.stringify(myObj.myrows),

Вы фактически передавали список объектов и ожидали один объект в методе контроллера бэкэнда.