SpringMVC实现自定义类型参数绑定
来源:互联网 发布:淘宝霏慕模特 编辑:程序博客网 时间:2024/05/18 04:13
关于SpringMVC参数绑定,常用的简单类型绑定,pojo类型以及包装pojo类型绑定。但是有些类型如日期类型,有多种格式,SpringMVC能识别转换的只有Thu Sep 07 22:34:39 CST 2017这种格式字符串。但是我们常用的则是“2017-07-12 13:20:20”这种格式。所以这时候我们可以自定义参数绑定。
处理原理:前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。可以在springmvc处理器适配器上自定义转换器Converter进行参数绑定。
一般使用
<mvc:annotation-driven/>
注解驱动加载处理器适配器,可以在此标签上进行配置。
需求:修改商品信息,成功后跳转到成功页面,修改信息中有日期格式,要求为”yyyy-MM-dd HH:mm:ss”
1、jsp页面
<body> <form id="userForm" action="${pageContext.request.contextPath }/updateItem.action" method="post"> <input type="hidden" name="id" value="${item.id }" /> 修改商品信息: <table width="100%" border=1> <tr> <td>标题</td> <td><input type="text" name="title" value="${item.title }"/></td> </tr> <tr> <td>卖点</td> <td><textarea rows="3" cols="30" name="sellPoint">${item.sellPoint }</textarea></td> </tr> <tr> <td>价格</td> <td><input type="text" name="price" value="${item.price }" /></td> </tr> <tr> <td>销售截止日期</td> <td><input type="text" name="sellDeadline" value='<fmt:formatDate value="${item.sellDeadline }" pattern="yyyy-MM-dd HH:mm:ss"/>' /></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="提交" /> </td> </tr> </table> </form></body>
2、表现层
@RequestMapping("/updateItem")//不自定义参数绑定的话出现400的错误 public String updateItem(HttpServletRequest request,TbItem item){ itemService.updateItem(item); return "success"; }
3、Service层
public void updateItem(TbItem item) { itemMapper.updateByPrimaryKey(item);}
实体类TbItem
public class TbItem { private Integer id; private String title; private String sellPoint; private Integer price; private Date sellDeadline; private String image; get、set方法 }
持久层使用的是mybatis逆向工程生成的代码就不需要给出了。
一般来说写到这里就行了,但是最后请求都不能到达Controller。因为日期类型”yyyy-MM-dd HH:mm:ss”SpringMVC是不认的不能绑定到item的sellDeadline属性上,页面展示400错误。
所以需要自定义参数绑定
1、自定义日期类型转换器
/** *转换日期类型的数据 *S:页面传递过来的类型 *T:转换后的类型 * @author 12706 * */public class DateConverter implements Converter<String, Date>{ public Date convert(String source) { Date date = null; if(source != null && !"".equals(source)){ try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); date = sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } } return date; }}
实现Converter接口,泛型为S,T。重写转换方法convert,其中S为页面传递过来的类型,T为转换后的类型。
2、配置转换器
在配置文件springmvc.xml中
<context:component-scan base-package="com.scu.mvc"/> <!--指定转换服务为格式转换工厂bean--> <mvc:annotation-driven conversion-service="formattingConversionServiceFactoryBean"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 转换器配置 --> <bean id = "formattingConversionServiceFactoryBean" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <list> <!-- 日期格式转换 --> <bean class="com.scu.mvc.conversion.DateConverter"></bean> </list> </property> </bean>
这时重启服务,修改时间后便能跳转到成功页面。同时id为1的商品的销售截止日期也被修改了。
阅读全文
0 0
- SpringMVC实现自定义类型参数绑定
- springmvc自定义参数类型绑定
- SpringMVC参数绑定和自定义参数类型绑定
- springmvc自定义参数绑定实现日期参数绑定
- SpringMVC自定义参数绑定
- SpringMVC第四篇【参数绑定详讲、默认支持参数类型、自定义参数绑定、RequestParam注解】
- springmvc参数绑定-自定义参数绑定
- springMVC 绑定参数 类型转换
- SpringMVC集合类型参数绑定
- springmvc自定义参数绑定用户信息
- SpringMVC绑定基本类型参数的问题
- SpringMVC中自定义参数解析器及内置类型的绑定
- SpringMVC自定义日期类型的数据绑定
- SpringMVC自定义日期类型的数据绑定
- SpringMVC自定义日期类型的数据绑定
- SpringMVC自定义日期格式进行参数绑定
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- SQL Server 2008 的几个版本
- MySQL(2)常见使用命令 登陆及数据库的操作
- 图解IIS8上解决ASP.Net第一次访问慢的处理
- 动态申请权限
- Java Socket编程----通信是这样炼成的
- SpringMVC实现自定义类型参数绑定
- 结构化方法与面向对象方法之比较
- yolo回归型的物体检测
- <七>、Hadoop Web项目--HDFS文件管理
- Fabled Rooks UVA
- 466. Count The Repetitions
- python学习(一)--python3的注释
- 9-7Android学习(listView优化(1))
- c++基础之插入和删除链表节点