SpringMVC注解 @initbinder 解决类型转换问题
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
使用 SpringMVC 时,常遇到表单中日期字符串和 JavaBean 的 Date 类型的转换,而 SpringMVC 默认不支持这个格式的转换,故需要手动配置,自定义数据的绑定才能解决这个问题。
在需要日期转换的 Controller 中使用 SpringMVC 的注解 @initbinder
和 Spring 自带的 WebDateBinder
类来操作。
WebDataBinder 是用来绑定请求参数到指定的属性编辑器.由于前端传到 controller 里的值是 String 类型的,当往 Model 里 Set这个值的时候,如果 set 的这个属性是个对象,Spring 就会去找到对应的 editor 进行转换,然后再 SET 进去。
代码如下:
@InitBinder
public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
需要在SpringMVC的配置文件加上
<!-- 解析器注册 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter"/> </list> </property>
</bean>
<!-- String类型解析器,允许直接返回String类型的消息 -->
<bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/>
换种写法
<mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/></bean></mvc:message-converters>
</mvc:annotation-driven>
拓展:
spring mvc在绑定表单之前,都会先注册这些编辑器,Spring自己提供了大量的实现类,诸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等许多,基本上够用。
使用时候调用WebDataBinder的registerCustomEditor方法
registerCustomEditor源码:
public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor) {getPropertyEditorRegistry().registerCustomEditor(requiredType, propertyEditor);
}
第一个参数 requiredType 是需要转化的类型。
第二个参数 PropertyEditor 是属性编辑器,它是个接口,以上提到的如 CustomDateEditor 等都是继承了实现了这个接口的PropertyEditorSupport 类。
我们也可以不使用他们自带的这些编辑器类。
我们可以自己构造:
import org.springframework.beans.propertyeditors.PropertiesEditor;public class DoubleEditor extends PropertyEditorSupport {@Overridepublic void setAsText(String text) throws IllegalArgumentException {if (text == null || text.equals("")) {text = "0";}setValue(Double.parseDouble(text));}@Overridepublic String getAsText() {return getValue().toString();}
}
转自:https://www.cnblogs.com/soundcode/p/6519036.html
另一举例文章见 :SpringMvc 注解 @InitBinder 表单多对象精准绑定接收
SpringMVC注解 @initbinder 解决类型转换问题相关推荐
- SpringMVC注解@initbinder解决类型转换问题
SpringMVC注解@initbinder解决类型转换问题 参考文章: (1)SpringMVC注解@initbinder解决类型转换问题 (2)https://www.cnblogs.com/an ...
- initbinder对ajax不起作用,详解SpringMVC注解@initbinder解决类型转换问题
在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换,而SpringMVC默认不支持这个格式的转换,所以需要手动配置,自定义数据的绑定才能解决这个问题. ...
- SpringMvc 注解 @InitBinder 表单多对象精准绑定接收
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. @InitBinder用于在@Controller中标注于方法,表示为当前控制器注册一个属性编辑器或 ...
- springMVC注解@initbinder日期类型的属性自动转换
在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能. 一 ...
- SpringMVC注解@CrossOrigin解决跨域问题
一般的,只要网站的[协议名protocol].[主机host].[端口号port]这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用 跨域:浏览同源策略的造成,是浏览器对JavaScrip ...
- springmvc注解入门程序
springnvc注解的入门程序 上一篇写的是非注解的这里补充一下注解的,相比来说还是注解简单,但是个人感觉还是非注解的好理解 建议看这篇的时候,先看看上一章,这里主要是贴代码 1.web.xml是一 ...
- 学习:springMVC注解
引言 在项目中,组长说我们的@Autowired注解都是黄的 后来,组长说加上@SuppressWarnings来抑制警告信息 @SuppressWarnings 注解目标 其注解目标为类.字段.函数 ...
- springmvc学习笔记(10)-springmvc注解开发之商品改动功能
springmvc学习笔记(10)-springmvc注解开发之商品改动功能 springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmv ...
- SpringMVC注解驱动标签做了什么操作
怎样开启注解驱动 SpringMVC开启注解驱动 <!-- mvc的注解驱动 --><mvc:annotation-driven/> <mvc:annotation-dr ...
最新文章
- SpringJpa多对多映射关系
- 什么?超过60%的开发者都开始从Java 8 升级到 Java 11了?
- 最完整的Win7快捷键
- WinForm:进度条的实现(异步)
- matlab抖g是什么,MATLAB中dither抖动函数的用法
- 数字人民币这一年,互联网企业做了什么?
- PyTorch:损失函数loss function
- 对mysql having 的理解
- 2015-11-23 12:50:55
- Gallery 3D+倒影 滑动切换图片示例
- three.js视频教程2022最新
- 因一纸设计稿,我把竞品APP扒得裤衩不剩(上)
- 【Linux应用】udhcpc命令获取到ip后,但是没有生效(没有设置进去)
- 「超级右键」Mac上最强的右键菜单工具,让你效率飞起!
- Excel数据填充技巧
- 关于机器人方面的sci论文_科学网—2014年SCI收录机器人期刊22种目录 - 万跃华的博文...
- 抗击疫情 融云在行动
- java实现查询Word是否包含批注和修订内容
- nyoj71独木舟上的旅行
- xgboost时间序列预测matlab,LightGBM和XGBoost实现时间序列预测(2019-04-02)
热门文章
- [你必须知道的.NET]第二十五回:认识元数据和IL(中)
- 【转】SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)
- 与计算机相关的课外活动,课外活动学生论文,关于应用型院校计算机专业课外活动相关参考文献资料-免费论文范文...
- JAVA的Future类
- go for 循环遍历数组并排序_10. Go语言流程控制:for 循环
- 加载中_GIS地图在项目中的加载显示
- 太吾绘卷第一世攻略_耽美推文-BL-仿佛在攻略一只河豚
- 【HDU - 6183】Color it(CDQ分治 或 动态开点线段树)
- 【POJ - 3253】Fence Repair(贪心,时光倒流)
- *【CodeForces - 195B】After Training (多解,模拟)