【问题标题】:@RequestBody not binding complex object@RequestBody 不绑定复杂对象
【发布时间】:2018-07-10 20:36:12
【问题描述】:

我正在尝试使用 jquery ajaxjson 对象形式 javascript 传递给 Spring 控制器。但如果json 对象很复杂,则它不会绑定。

Javascript:

    var inputParam={};
    inputParam.name="xxx";
    inputParam.address.city="chicago";
    inputParam.address.zip="123456";

    var jqxhr = $.ajax({
            url:"/myurl",
            type:"POST",
            dataType: "html",
            contentType :'application/json',
            data:JSON.stringify(inputparam),
            beforeSend: function( xhr ) {


            }
        });

//Handle a successful call to data service
    jqxhr.done(function(  data, textStatus, jqxhr,response ) {
        // my successful code handle

    });

    //Handle an unsuccessful call to data service
    jqxhr.fail(function(jqXHR, textStatus) {    

        //my error handling code

    });

控制器:

 @RequestMapping(value = "/myurl", method = RequestMethod.POST)
 public String getMyPage(  @RequestBody InputParams inputParam,HttpServletRequest request, Model model ) throws Exception{
        //my code
  }

POJO:

class InputParams {
   private String name;
   private Address address;
  //getter setter
}

class Address{
  private String city;
  private String zip;
  //getter setter
}

我遇到的问题是地址没有绑定到控制器上。

知道我在这里做错了什么吗?

【问题讨论】:

  • 请在 InputParams 类中提供正确的参数“名称”类型。
  • 您的 JS 代码抛出异常。您的 Java 代码无法编译。贴出真实代码。
  • 我无法输入所有控制器代码。这也没有必要。我的问题是从 ajax 传递的 inputParam 在控制器端没有绑定。
  • 如果那是您的真实代码,那么您的 AJAX 请求甚至无法发送。贴出真实代码。
  • 当数据发布到您的后端或只是null时,您是否收到错误或抛出异常?

标签: spring-mvc spring-boot


【解决方案1】:

以这种方式设置您的inputParam,这应该可以解决您的问题

var inputParam={
         name : "xxx",
         address: {
             city :"chicago",
             zip  :"123456"
                 }
           };

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多