2016-03-08 7 views
-1

Мне нужна ваша помощь. Я должен отправить объект json в контроллер весны mvc и вернуть его и заменить в поле в представлении. Мой проект - Spring MVC. Это новое для меня. Я отправляю контроллер и код jQuery.передать json объект контроллеру

setOperator = function(newOperator) { 
 

 
     // alert("operator " + newOperator); 
 
      if (newOperator == '=') { 
 
       // alert("newOperator is = "); 
 
       //AJAX, JSON 
 
       json_result = {"jsn_result" : lastNumber}; 
 
       $.ajax({ 
 
        type: "POST", 
 
        contentType : 'application/json; charset=utf-8', 
 
        dataType : 'json', 
 
        url: "http://localhost:8080/calc", 
 
        data: JSON.stringify(json_result), // Note it is important 
 
        success :function(result) { 
 
         console.log(json_result.jsn_result); 
 
        } 
 
       }); 
 
       equalsPressed = true; 
 
       calculate(); 
 
       return; 
 
      } 
 

 
      if (!equalsPressed) { 
 
       // alert("followed by an operator (+, -, *, /)"); 
 
       calculate(); 
 
      } 
 

 
      equalsPressed = false; 
 
      operator = newOperator; 
 
      operatorSet = true; 
 
      lastNumber = parseFloat(currNumberCtl.val()); 
 
       },

@Controller 
 
@RequestMapping("/") 
 
public class CalculatorController { 
 
\t @RequestMapping(method = RequestMethod.GET) 
 
\t public String printWelcome(ModelMap model) { 
 
\t \t return "calculator"; 
 
\t } 
 
}

+0

Добро пожаловать в stackoverflow! Пожалуйста, прочитайте [Как спросить] (http://stackoverflow.com/help/how-to-ask) и передайте код, который вы пробовали до сих пор. – user1859022

+0

Пожалуйста, включите код как текст в раздел «code». – zx485

+0

Какие изменения я должен включить в контроллер? – Maria

ответ

0

Ну вы должны сделать несколько Давайте предположим, что вы хотите передать в контроллер с JSON как это:

{ 
    "name": "The name", 
    "surname": "The surname" 
} 

И давайте предположим, что вы хотите вернуться в взгляд, JSON как это:

{ 
    "passedFullName": "The name & The surname" 
} 

Вы должны: создавать модели для ввода JSON и вывода JSON создать метод, способный при получении входного JSON и управлять ею

Я хотел бы сделать следующее: создание ввода модели: я бы создать класс Java, как это:

import java.io.Serializable; 
public class InputJson implements Serializable 
{ 

private static final long serialVersionUID = -9159921073367603471L; 
private String name; 
private String surname; 
public String getName() 
{ 
return name; 
} 
public void setName(String name) 
{ 
this.name = name; 
} 
public String getSurname() 
{ 
return surname; 
} 
public void setSurname(String surname) 
{ 
this.surname = surname; 
} 

} 

Тогда я создать класс, как это (для вывода JSON):

import java.io.Serializable; 

public class OutputJson implements Serializable 
{ 
private static final long serialVersionUID = -1504974498083180855L; 
private String passedFullName; 
public String getPassedFullName() 
{ 
return passedFullName; 
} 
public void setPassedFullName(String passedFullName) 
{ 
this.passedFullName = passedFullName; 
} 

} 

Тогда в контроллере я бы создать метод, как это:

@RequestMapping(method = { RequestMethod.POST }, value = { "/calc" }) 
public ResponseEntity<OutputJson> handleJson(@RequestBody InputJson input) throws Exception 
{ 
    OutputJson result = new OutputJson(); 
    result. setPassedFullName(input.getName()+" & "+input.getSurname()); 
    return new ResponseEntity<OutputJson>(result, HttpStatus.OK); 
} 

Конечно, вы можете сделать более сложные объекты ... это были просто простые примеры Надеюсь, это может помочь

0

Сначала создайте объект Java для ваших данных json, это может помочь использовать онлайн-генератор: JsonSchema2Pojo Затем измените метод declaretion:

@RequestMapping(method = RequestMethod.Post,consumes="application/json") 
public @ResponseBody String printWelcome(@RequestBody YourObject model) { 
    return "calculator"; 
} 

Так в основном иметь в виду метод HTTP (POST), формат, который вы принимаете данные (JSON, XML или оба), то @RequestBody для указания данных должны быть извлечены из тело Http и @ResponseBody, если ваш контент должен быть сырым или сериализованным, а не вызывающим ваше представление.

Смежные вопросы