【问题标题】:Passing a list of lists to mvc controller将列表列表传递给 mvc 控制器
【发布时间】:2016-10-13 09:33:36
【问题描述】:

我正在使用 Spring MVC,我想将数据传递给后端服务器中的控制器。

@RequestMapping(value="/project/update")
public @ResponseBody projectWebForm update(HttpServletRequest request,
        HttpServletResponse response,
        @RequestBody projectWebForm input){

        ..............

        }

我正在使用@RequestBody 标记将我的字段映射到一个名为 projectWebForm 的类

在 projectWebForm 类中,我有 3 个字段

private String name;
private String age;
private List<List<Data>> list;

下面是我的数据类

 public class Data{
  private String data1;
  private String data2;

getters setters..... 
}

现在在一个 jsp 文件中,我正在编写 ajax 来将数据传递给控制器​​

function update(name,age){
var option={
    headers:{'Content-type':'application/json;charset=utf-8'},
    contentType:'application/json;charset=utf-8',
    dataType:'json',
    async:true,
    type:'post',
    data:JSON.stringify({
        name:name,
        age:age,
        list:____________ <---- ????????
    }),
    url:'<%=request.getContextPath()%>/project/update.do',
    success:function(response){
        ......
        }
    },
};
$.ajax(option);
};

我可以轻松地将姓名和年龄传递给控制器​​,因为它现在只是一个字符串 我需要一个列表列表,那么我应该如何构建我的列表以便将其映射到 RequestBody? json 应该是什么样子才能正确传递给 RequestBody?可以举个例子吗?

【问题讨论】:

  • 你把这些包裹在form里面了吗?
  • 将其作为数组传递。

标签: javascript java json ajax spring-mvc


【解决方案1】:

Js

var list = new Array();

var data = {
    data1 : getData1,
    data2 : getData2
};

list.push(data);

data:JSON.stringify({
        name:name,
        age:age,
        list: list
    }),

public class test {

   pirvate String name;
   private String age;
   pirvate List<data> list;

    ... s,g

}

控制器

@RequestMapping(value="/project/update", method = RequestMethod.POST)
public @ResponseBody String update(HttpServletRequest request, @RequestBody test test){

      .............. // break point
      return "";

}

你检查模型(测试)。

【讨论】:

    【解决方案2】:
    function Form( form ){
    var formData = $(form).serialize();
    att=$(form).attr("action") ;
    $.post(att, formData).done(function(response){
    
         var errorInfo="";
    
          if(response.status == "SUCCESS"){
              window.location.href="/";
          }
    });
    return true;}
    

    序列化你的表单数据并在spring mvc中发送到服务器

        <form name="myForm" th:object="${demo}" th:action="@{/demo}"  method="post"
        class="stdform" id="triggerform">
    
                <div class="form-group">
             <label for="usr">Name:</label>
         <input type="text" th:field="*{name}" class="form-control" />
         </div>
        <div class="form-group">
             <label for="usr">hobbies:</label>
                <input  th:field="*{hobbies[0].hobbiename}" type="text" class="form-control"   />
                 <input th:field="*{hobbies[1].hobbiename}" type="text" class="form-control"   />
                 <input th:field="*{hobbies[2].hobbiename}" type="text" class="form-control"  />
                 <input th:field="*{hobbies[3].hobbiename}" type="text" class="form-control"  />
                 <input th:field="*{hobbies[4].hobbiename}" type="text" class="form-control"   />
                 <input th:field="*{hobbies[5].hobbiename}" type="text" class="form-control"   />
    
    
         </div>
    
    
    
                <button type="button"  onclick="return Form(this.form)" class="btn btn-primary">Get Started</button>
    
    </form>
    

    控制器部分

        @RequestMapping(value = "/demo", method = RequestMethod.GET)
    public ModelAndView demo(HttpServletRequest request) {
            logger.info("Welcome to getInboxMessage Method inside the MessageController ");
            Profile profile=(Profile)request.getSession().getAttribute("profile");
            ModelAndView model=new ModelAndView("test");
            model.addObject("demo", new Demo());
            return model;
    
        }
    
    @RequestMapping(value = "/demo", method = RequestMethod.POST)
    public ModelAndView demopostdata(@ModelAttribute Demo demo,HttpServletRequest request) {
            logger.info("Welcome to getInboxMessage Method inside the MessageController ");
            Profile profile=(Profile)request.getSession().getAttribute("profile");
            ModelAndView model=new ModelAndView("test");
            model.addObject("demo", new Demo());
            return model;
    
        }
    

    这是最简单的方法,因此您可以避免大量的 jquery 编码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2016-06-09
      • 1970-01-01
      • 2014-06-26
      相关资源
      最近更新 更多