前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC--参数绑定笔记

SpringMVC--参数绑定笔记

作者头像
SuperHeroes
发布2018-05-30 18:18:07
7620
发布2018-05-30 18:18:07
举报
文章被收录于专栏:云霄雨霁云霄雨霁

从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。 springmvc中,接受页面提交的数据是通过方法的形参来接收。而不是在controller类定义成员变量接收。

注解开发中参数绑定: 将request请求过来的key/value的数据(理解成一个串),通过转换(参数绑定的一部分),将key/value串转成形参,将转换后的结果传给形参(整个参数绑定过程)。 springmvc所支持的参数绑定: 1、默认支持很多类型:HttpServletRequest、response、session、 model/modelMap将模型数据填充到request域; 2、支持简单的数据类型:整型、字符串、日期。 只要能保证request请求的参数名和形参名称一致,自动绑定成功; 如果request请求的参数名和形参不一致,可以通过@RequestParam(指定request请求的参数名),@RequestParam加在形参的前边。 @RequestParam的属性required设置为true,表示该参数必须传入。属性defalutValue可以设置默认值,如果参数没有传入,将默认值传入。 3、支持pojo类型。 只要保证页面提交的request提交的参数名和pojo中的属性一致,自动将request请求的参数设置到pojo的属性中。 注意:形参中既有pojo类型又有简单类型,参数绑定互不影响。 页面中input的name和controller的pojo形参中的属性一致,将页面中的数据绑定到pojo. 页面定义: <input type="text" name="name" value="${itemsCustom.name}"/> controller的pojo形参定义: public class ItemsCustom{     private Integer id;     private String name;     ... }

问题: post乱码: 在web.xml中添加post乱码过滤器。 get乱码: 1、修改tomcat配置文件添加编码与工程编码一致; 2、对参数进行重新编码。

自定义参数绑定: 日期类型绑定自定义:定义Converter <源类型,目标类型> 接口的实现类。Converter<String,Date> 对于controller形参中有pojo对象,如果属性中有日期类型,需要自定义参数绑定。 需要向处理器适配器中注入自定义的参数绑定组件。 实现: 注入:<mvc:annotation-driven conversion-service="conversionService"></mvc;annotation-driven> <!--自定义参数绑定--> <bean id="conversionService" class="FormattingConversServletFactoryBean">     <!--转换器-->     <property name="converters">         <list>             <bean class="自定义类型转换全限定类名"/>             <bean class="自定义类型转换全限定类名"/>             <bean class="自定义类型转换全限定类名"/>         </list>     </property> </bean> 实现自定义类型转换(将字符串转化为日期): public class CustomDateConverter implements Converter<String, Date>{ @Override     public Date convert(String source){         //实现将字符串转化为日期     } }

注意:要转换的目标类型一定要和接受的pojo中的属性类型一致。

包装类型pojo的参数绑定: 在形参中让包装类型的pojo(pojo中包含pojo)接收查询条件参数。 页面参数: <input name="itemsCustom.name/> 方法形参: public ModelAndView queryItems(HttpServletRequest request, ItemsQueryVo itemsQueryVo)throws Exception{...} pojo: public class ItemsQueryVo{     private Items items;     private ItemsCustom itemsCustom;     ... }

参数绑定--数组: 页面定义: <c:forEach items="${itemsList}" var="item"> <tr> <td><input type="checkbox" name="items_id" value="${item.id}"/></td> </tr> </c:forEach> 形参定义: public String deleteItems(Integer[] items_id)throws Exception{...}

参数绑定--List/Map:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档