`
A牛哥哥
  • 浏览: 150196 次
社区版块
存档分类
最新评论

springmvc 集合参数

阅读更多
第一种情况:数据是基本类型或者String
1, 直接用表单提交,参数名称相同即可;
Controller参数定义为数组类型即可.不要定义为List<String>
<form action="${pageContext.request.contextPath}/dashboard/xxx" method="post">
	<input type="text" name="xxx"/><br>
	<input type="text" name="xxx"/><br>
	<input type="text" name="xxx"/><br>
	<input type="text" name="xxx"/><br>
	<input type="submit" value="tijiao"/>
</form>


 @RequestMapping(value = "/xxx")
    public void xxx(String[] xxx) {
        System.out.println(xxx);
    }

Controller中不要用List<String>接收,不然会报下面这个错org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface

2, ajax请求:
$.ajax({
        url: "${pageContext.request.contextPath}/dashboard/xxx",
        type: "POST",
        contentType : 'application/json;charset=utf-8', //请求头一定要有
        dataType:"json",
        data: JSON.stringify(["aaa","bbb"]), //将Json对象转成Json字符串
        success: function(data){
            alert(data);
        },
        error: function(res){
            alert(res.responseText);
        }
    });


    @RequestMapping(value = "/xxx")
    public void xxx(@RequestBody String[] xxx) {
        System.out.println(xxx);
    }

ajax请求时请求头contentType 申明为application/json;charset=utf-8,且type 为post, 这样请求体在body中且请求体为一个json字符串, controller中获取参数一定要加@RequestBody,表示取请求体中的所有的内容,然后转为String[], 至于形参名xxx可以任意命名,因为application/json;charset=utf-8的请求体中无参数名称


第二种情况:数据是自定义对象
public class User {

    private Integer id;
    private String name;
    private String pwd;

    //getter、setter省略
 }


1, 表单提交
<form action="/user/submitUserList_2" method="post">
        ID:<input type="text" name="users[0].id"><br/>
        Username:<input type="text" name="users[0].name"><br/>
        Password:<input type="text" name="users[0].pwd"><br/><br/>

        ID:<input type="text" name="users[2].id"><br/>
        Username:<input type="text" name="users[2].name"><br/>
        Password:<input type="text" name="users[2].pwd"><br/><br/>
        <input type="submit" value="Submit">
    </form>


除了刚才公用的User类,还要封装一个User的容器类UserModel:
public class UserModel {
    private List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public UserModel(List<User> users) {
        super();
        this.users = users;
    }

    public UserModel() {
        super();
    }

}
    @RequestMapping(value = "/xxx")
    public void xxx(UserModel users) {
        List<User> userList = users.getUsers();
    }


2, ajax 请求
var arr = new Array();
arr.push({id: "1", name: "李四", pwd: "123"});
arr.push({id: "2", name: "张三", pwd: "332"});

$.ajax({
        url: "${pageContext.request.contextPath}/dashboard/xxx",
        type: "POST",
        contentType : 'application/json;charset=utf-8', //请求头一定要加
        dataType:"json",
        data: JSON.stringify(arr),    //将Json对象序列化成Json字符串
        success: function(data){
            alert(data);
        },
        error: function(res){
            alert(res.responseText);
        }
    });

    @RequestMapping(value = "/xxx")
    public void xxx(@RequestBody List<User> xxx) {
        System.out.println(xxx);
    }

这里可以定义成List<User>, 不会报异常.ajax中的contentType 和controller中的@RequestBody一定要加


第三种,适宜任何类型数据
用js将请求参数转为json字符串, 然后contentType 设置为application/x-www-form-urlencoded, 这种请求的请求体格式是name1=value1&name2=value2&...

var arr = new Array();
arr.push({id: "1", name: "李四", pwd: "123"});
arr.push({id: "2", name: "张三", pwd: "332"});

$.ajax({
        url: "${pageContext.request.contextPath}/dashboard/xxx",
        type: "POST",
        contentType : 'application/x-www-form-urlencoded', //设置请求头信息
        dataType:"json",
        data: "xxx="+JSON.stringify(customerArray), //将Json对象序列化成Json字符串
        success: function(data){
            alert(data);
        },
        error: function(res){
            alert(res.responseText);
        }
    });

@RequestMapping(value = "/xxx")
    public void xxx(String xxx) {
        System.out.println(xxx);
       //用Gson或其他json包转成对象或数组
    }

如果 contentType 设置为 application/json;charset=utf-8, controller参数要加@RequestBody,否则取不到值.
分享到:
评论

相关推荐

    springMvc集合接收参数的用法

    本教程将重点讲解如何接收ajax和form表单传递的集合参数。 一、接收Ajax传递的集合参数 1. JSON格式数据:Ajax通常使用JSON格式传递复杂数据,如集合。在JavaScript中,你可以创建一个JSON对象,将集合数据转换...

    Springmvc请求处理方法参数

    Spring MVC支持多种类型的参数,包括基本数据类型、对象、数组、集合、Map以及自定义类型。例如: - **基本数据类型**:如int、String、double等。 - **Java对象**:可以直接传递整个对象,对象的属性值与请求参数...

    SpringMVC接收复杂集合对象(参数)代码示例

    在SpringMVC中,处理复杂的集合参数时,需要特别注意以下几点: 1. **@RequestBody**:这个注解用于告诉Spring MVC框架,请求体中的数据应该被转化为指定类型的参数。在处理集合参数时,必须加上@RequestBody。 2....

    springmvc高级参数绑定

    在Spring MVC框架中,高级参数绑定是一个核心特性,它允许开发者高效地处理HTTP请求中的数据,包括多选、数组和集合等复杂类型的参数。在这个场景中,我们需要实现一个功能,让用户能够在商品列表页面上选择多个商品...

    SpringMVC+sqlitejdbc的jar集合

    2. **配置DataSource**:在Spring的配置文件中定义DataSource bean,设置JDBC连接参数。 3. **创建Repository**:根据业务需求创建自定义的Repository接口,扩展JpaRepository或CrudRepository。 4. **编写Service**...

    springmvc基础.docx

    springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器... 参数绑定(简单类型、pojo、集合类型) 自定义参数绑定 6. springmvc和struts2区别

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第4章 参数绑定 (共20页).pptx

    在SpringMVC参数绑定过程中,当客户端发送请求时,其中的key/value数据会被处理,通过参数绑定组件转化成Controller方法的形参。早期版本的SpringMVC使用`PropertyEditor`来进行字符串到Java对象的转换,而后期则...

    Springmvc自定义参数转换实现代码解析

    高级参数绑定也可以将 List 绑定到控制器的方法参数上,例如使用包装类,包装类中有 List 集合。 SpringMVC 提供了多种参数绑定的方式,包括默认的参数绑定、简单类型参数绑定、POJO 类型参数绑定、包装类型参数...

    SpringMVC详解

    SpringMVC提供了强大的数据绑定功能,可以自动将请求参数绑定到控制器方法的参数上,也可以将模型对象的属性绑定到HTML表单字段。这包括对基本类型、复杂类型以及集合类型的绑定。 7. **处理器拦截器** 处理器...

    吴天雄--SpringMVC笔记.doc

    - 支持多种数据类型和参数传递,包括基本类型、String、对象、集合等。 - 使用 @RequestMapping 注解实现请求映射,简化配置。 - 字符编码过滤器确保正确处理请求和响应的字符编码。 - 自定义类型转换器,允许...

    基于SpringMVC接受JSON参数详解及常见错误总结

    3. **SpringMVC参数绑定**:在SpringMVC中,可以使用多种方式接受JSON参数。一种常见的方法是使用@RequestParam注解,这个注解和Servlet中的request.getParameter方法有相似的功能。通过对控制器方法参数使用@...

    springmvc学习第一天

    2. **参数绑定**:SpringMVC支持多种类型的参数绑定,包括简单类型、POJO(Plain Old Java Object)、集合类型等。 3. **自定义参数绑定**:对于更复杂的需求,开发者可以通过实现自定义的参数绑定器来处理。 #### ...

    SpringMVC.docx

    6. 接收对象List集合,处理数组或集合类型的参数。 7. 接收JSON格式的请求,配合`@RequestBody`。 【文件上传】 文件上传需要: 1. 引入相关依赖,如Apache Commons FileUpload。 2. 添加文件解析器配置。 3. 编写...

    开涛Spring和SpringMVC书籍

    《开涛Spring和SpringMVC书籍》集合包含了三部分学习资料,分别是《跟我学spring3(1-7).pdf》、《跟我学SpringMVC.pdf》以及《跟我学spring3(8-13).pdf》。这些教材由知名IT专家开涛撰写,深入浅出地讲解了Spring...

    springmvc第一天课堂笔记.docx

    - **参数绑定**:支持绑定复杂的对象,如POJO对象、数组、集合等。 - **数据回显**:自动将模型数据回显到表单中。 - **文件上传**:支持多文件上传功能。 - **JSON数据交互**:支持通过JSON格式进行数据交互。 - **...

    SpringMVC学习课堂笔记

    - **集合类型绑定**:将多个请求参数绑定到集合类型。 ##### 4.3 自定义参数绑定 对于复杂的参数绑定需求,可以通过自定义参数绑定器来实现。 #### 五、SpringMVC与Struts2的区别 - **配置方式**:SpringMVC倾向...

    springmvc_mybatis1110

    本学习资源集合了传智播客的课程内容,旨在帮助开发者深入理解并掌握SpringMVC和MyBatis的集成使用,构建完整的项目体系。 一、SpringMVC框架解析 SpringMVC是Spring框架的一个模块,主要处理HTTP请求和响应,提供...

    Spring MVC不能直接接收list类型参数的问题

    ### Spring MVC 无法直接接收 List 类型参数的问题详解 #### 问题背景 在 Web 开发过程中,前后端数据交互是必不可少的一部分。对于基于 Java 的 Spring MVC 框架而言,处理这种交互通常需要理解如何正确地接收前端...

    springMVC图片上传示例

    在后端,我们需要遍历`MultipartFile`集合以处理每个上传的文件。 四、图片回显 图片回显是指在用户上传图片后,能够在页面上预览已上传的图片。这通常通过将图片数据转换为Base64编码,然后嵌入到HTML的`&lt;img&gt;`...

    SpringMVC3+jsp

    - 自动将HTTP请求参数绑定到Controller方法的参数上,支持集合类型的参数绑定。 5. **异常处理**: - 可以使用`@ExceptionHandler`注解定义异常处理器,或者配置`&lt;exception-type&gt;`元素来全局处理异常。 - `@...

Global site tag (gtag.js) - Google Analytics