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

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集合接收参数的用法

    本demo 用来写了springmvc如何接受ajax传集合以及接收form表单传集合

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

    主要介绍了SpringMVC接收复杂集合对象(参数)代码示例,举接收List、List、List&lt;Map&gt;&gt;、User[]、User(bean里面包含List)几种较为复杂的集合参数,具有一定参考价值,需要的朋友可以了解下。

    SpringMVC接收请求参数所有方式总结

    SpringMVC请求参数接收 1 GET方法请求参数处理 2 表单参数 3 【非对象】- 非对象类型单个参数接收。 3 【对象】 - 对象类型参数接收。 4 【数组】 - 列表或者数组类型参数。 5 JSON参数 6 URL路径参数 6 文件上传 8 ...

    springmvc基础.docx

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

    springmvc入门程序(下载后你不会后悔的)

    springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析器 springmvc入门程序 ... 参数绑定(简单类型、pojo、集合类型(明天讲)) 自定义参数绑定(掌握) springmvc和struts2区别

    springmvc第一天课堂笔记

    springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析... 参数绑定(简单类型、pojo、集合类型(明天讲)) 自定义参数绑定(掌握) springmvc和struts2区别 springmvc和struts2的区别

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

    前端使用jquery向后台传递数组类型的参数,Java后台直接通过List类型接收,会发现无法取到参数。

    springmvc思维导图

    springmvc的概念、springmvc的运行原理(前端控制器、处理器映射器、处理器适配器、处理器、视图解析器)、同步请求的方式(ModelAndView、String、无返回值、默认的绑定值)、异步请求的注解、请求参数的封装(简单...

    springmvc高级.docx

    springmvc的高级应用 包含代码+知识点+详细解释 1. 参数绑定(集合类型) 2. 数据回显 3. 上传图片 4. json数据交互 5. RESTful支持 6. 拦截器

    springMVC框架

    简单的springMVC框架集合传值学习代码,前台和后台通过参数进行数据绑定 前提: 参数名 和 表单name保持一致,前台和后台通过参数进行数据绑定 bean绑定方式

    spring+springMVC+MyBatis

    第 1章 Ssm 整合 ................................ ................................ ................................ ....................... 2 1.11.1 复制 webweb 工程 ...................................

    Spring Mvc参数传递例子

    Spring MVC传参是Spring学习中的比较容易混淆的地方,因为传参方式种类多,接受参数种类多,初学者较容易因为不懂HTTP参数传递原理,而摸不着头脑,该篇文章介绍Spring MVC参数绑定的几种方式。

    SpringMVC【入门】篇

    SSM三部曲: 如果你读完这篇文章,... 请求参数绑定集合类型4.自定义类型转换器代码编写细节:怎么通过SpringMVC获取Servlet原生API常用注解?==@RequestParam()====@RequestBody()====@PathVariable()====HiddenHttpM

    SpringBoot+SpringMVC+Freemarker实现单个上传和多个文件上传

    SpringBoot版本的SpringMVC+Freemarker上传案例,...有需要放开即可,另外POM也配置了相关的操作,注意,如果是单个文件IndexController的参数就不是List集合了,只需要改成单个即可,另外Controller的循环代码去掉即可

    spring mvc拦截器过滤json中的null值

    spring mvc拦截器,过滤json数据中的null值,将null变成空字符串,内含截图,及jar包

    SpringMvcGuide:一个用来记录SpringMVC细节的项目

    SpringMVC的相关用法主要内容@RequestMapping注解中相关参数的意义参考RequestMappingController类.Controller中方法的参数可以定义的类型统计普通常用的基本参数没有写, 介绍了一些稍微冷门但是还有点用的, 参考...

    java 8实战 清晰带书签

    的朋友“方法引用”让你在做其他事情的过程中,可以简明地将代码或方法作为参数传递进去执 行。在本书中,你会看到这种思想出现得比预想的还要频繁:从加入作比较的代码来简单地参数 化一个排序方法,到利用新的...

    postman+json+springmvc测试批量添加实例

    2)在Headers一栏添加参数Content-Type=application/json; 已本地测试为例:对应配置图如下: 3)点击Body一栏,并选择raw,然后在对应的text区域输入要传递和添加的数据集合; 本例已两条数据位例,如下图: 其中每...

    spring杂谈 作者zhang KaiTao

    1.23 扩展SpringMVC以支持绑定JSON格式的请求参数 1.24 扩展SpringMVC以支持绑定JSON格式的请求参数 1.25 在应用层通过spring特性解决数据库读写分离 1.26 context:component-scan扫描使用上的容易忽略的use-default...

    第12章Spring MVC参数绑定的验证

    第12章Spring MVC参数绑定的验证 简单数据类型绑定 默认数据类型绑定 POJO类型 复杂数据类型绑定(数组、集合)

Global site tag (gtag.js) - Google Analytics