将json对象传递给控制器

时间:2016-03-08 16:19:48

标签: jquery json spring spring-mvc

我需要你的帮助。我必须将json对象发送到spring mvc控制器并将其取回并在视图中的字段中替换它。我的项目是Spring MVC。这对我来说很新。我发布了Controller和jQuery代码。



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 {
	@RequestMapping(method = RequestMethod.GET)
	public String printWelcome(ModelMap model) {
		return "calculator";
	}
}




2 个答案:

答案 0 :(得分: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);
}

当然你可以制作更复杂的物体......这些只是一个简单的样本 我希望这可以帮助

答案 1 :(得分:0)

首先,为json数据创建一个Java对象,它可能有助于使用在线生成器:JsonSchema2Pojo 然后更改方法声明:

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

所以基本上记住Http方法(POST),你接受数据的格式(json,xml或两者),@RequestBody表示必须从Http体中恢复数据,@ResponseBody 1}}如果您的内容必须是原始内容或序列化内容,而不是调用您的视图。