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 表单多对象精准绑定接收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/447712.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/447712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看了就彻底明白人生!!!

出生一张纸&#xff0c;开始一辈子&#xff1b; 毕业一张纸&#xff0c;奋斗一辈子&#xff1b; 婚姻一张纸&#xff0c;折磨一辈子&#xff1b; 做官一张纸&#xff0c;斗争一辈子&#xff1b; 金钱一张纸&#xff0c;辛苦一辈子&#xff1b; 荣誉一张纸&#xff0c;虚名一辈子…

FreeSql (三十三)CodeFirst 类型映射

前面有介绍过几篇 CodeFirst 内容文章&#xff0c;有 《&#xff08;二&#xff09;自动迁移实体》(https://www.cnblogs.com/FreeSql/p/11531301.html)《&#xff08;三&#xff09;实体特性》(https://www.cnblogs.com/FreeSql/p/11531302.html)《&#xff08;四&#xff09;…

FreeSql (三十四)CodeFirst 迁移说明

FreeSql 支持 CodeFirst 迁移结构至数据库&#xff0c;这应该是(O/RM)必须标配的一个功能。 与其他(O/RM)不同FreeSql支持更多的数据库特性&#xff0c;而不只是支持基础的数据类型&#xff0c;这既是优点也是缺点&#xff0c;优点是充分利用数据库特性辅助开发&#xff0c;缺点…

曾国藩家训:三个地方看一个家庭的兴败

第一看&#xff1a;看子孙睡到几点&#xff0c;假如睡到太阳都已经升得很高的时候才起来&#xff0c;那代表这个家族会慢慢懈怠下来;第二看&#xff1a;看子孙有没有做家务&#xff0c;因为勤劳、劳动的习惯影响一个人一辈子;第三看&#xff1a;看后代子孙有没有在读圣贤的经典…

Linux 查看文件指定行数 内容

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、tail date.log 输出文件末尾的内容&#xff0c;默认10行 tail -20 date.log 输出最后20行的内容 tail -n -20…

FreeSql (三十五)CodeFirst 自定义特性

比如项目内已经使用了其它 orm&#xff0c;如 efcore&#xff0c;这样意味着实体中可能存在 [Key]&#xff0c;但它与 FreeSql [Column(IsPrimary true] 不同。 Q&#xff1a; FreeSql 实体特性为啥这么别扭&#xff1f; A&#xff1a; 为了考虑一致性用法&#xff0c;全部封装…

相随心转,枯荣立现

宋朝时&#xff0c;有高孝标和高孝积两个双胞胎兄弟&#xff0c;举止言谈和才思颖悟都象同一人。十六岁时&#xff0c;他们一齐考上秀才。婚后&#xff0c;父母为使媳妇能辨认丈夫&#xff0c;命令他们穿着不同衣裳和鞋子&#xff0c;以便辨认。有一天&#xff0c;他们遇到陈希…

查看 linux 硬件信息:内存、分区、系统、环境变量、防火墙、路由、端口监听、进程、CPU...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、linux CPU大小&#xff1b; 其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg…

成功人士高效率的工作法

现在的人总是忙个不停&#xff0c;尤其企业家或高阶主管大多身兼数职&#xff0c;为了达成工作目标&#xff0c;不得不经常加班。加上现在社交媒体和各种电子产品的诱惑让时间更加不够用了。每天察看邮件并即时回覆并不代表工作效率。如何排除干扰、克服惰性和避免超时工作才是…

R语言 线性回归分析实例

y,X1,X2,X3 分别表示第 t 年各项税收收入(亿元)&#xff0c;某国生产总值GDP(亿元)&#xff0c;财政支出(亿元)和商品零售价格指数(%). (1) 建立线性模型&#xff1a; ① 自己编写函数&#xff1a; > library(openxlsx) > data read.xlsx("22_data.xlsx",shee…

maven 工程 pom.xml 中 relativePath 的作用

Maven parent.relativePath 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 默认值为../pom.xml 查找顺序&#xff1a;relativePath元素中的地址–本地仓库–远程仓库 设定一个空值将…

【Cef编译】 CefSharp编译失败,检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”...

编译CefSharp生成后一个libcef_dll_wrapper.lib时&#xff0c;供CefSharp使用。结果CefSharp编译的时候报错。遇到以下异常&#xff1a;libcef_dll_wrapper.lib(binary_value_ctocpp.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值…

做老板欣赏的优秀员工 十大准则你达标吗?

在一个企业里&#xff0c;什么样的员工才是优秀的员工&#xff1f;优秀的员工拥有的怎样的特质&#xff1f;同在一个公司工作&#xff0c;同样的学历与相仿的年龄&#xff0c;为什么有的人总是业绩更好、工资更高、待遇更优秀、更能够获得老板的信任&#xff1f;这是目前许多企…

2 小时学会 springboot ( 附实例讲解 )

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一.什么是spring boot Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention…

管理拾穗:四眼原则

日前听到一位现在服务于一家德国公司的朋友提及他们公司里的主管有一个四眼原则(Four eyes principle)&#xff0c;意思是如果有一份对外的重要文件要发出前&#xff0c;要经过两个人(四个眼睛)看过&#xff0c;确定内容无误之后&#xff0c;再发出。我也曾经在一家国际知名的德…

CEF编译 执行gn args out\Release_GN_x86异常

gn args out\Debug_GN_x86 用来配置编译参数&#xff0c;执行gn args out\Release_GN_x86时异常&#xff1a; Toolchain is out of date. Run "gclient runhooks" to update the toolchain, or set DEPOT_TOOLS_WIN_TOOLCHAIN0 to use the locally installed toolcha…

成功者刻骨铭心的一句话

您知道吗&#xff1f;在这个世界上有许多名人和飞黄腾达的企业家。他们的成功除了靠自己的努力外&#xff0c;还靠来自他人的启发&#xff0c;改变了他们的观点&#xff0c;因而攀上了人生的巅峰。就像美国著名顾问公司盖洛普&#xff08;Gallup&#xff09;的CEO吉姆‧克利夫顿…

js中的鼠标右键点击事件

https://www.cnblogs.com/sea-stream/p/9638870.html window.onload function(){//去掉默认的contextmenu事件&#xff0c;否则会和右键事件同时出现。document.oncontextmenu function(e){e.preventDefault();};document.getElementById("test").onmousedown fun…

拜托!面试请不要再问我 Spring Cloud 底层原理 ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 >出处&#xff1a; >https://www.fangzhipeng.com > 本文出自[方志朋的博客](http://blog.csdn.net/forezp) 本文为转载文章&…

Django ORM 知识点总结

Query是如何工作的 Django QuerySet是懒执行的&#xff0c;只有访问到对应数据的时候&#xff0c;才会去访问数据库。另外如果你再次读取查询到的数据&#xff0c;将不会触发数据库的访问&#xff0c;而是直接从缓存获取。 比如 # 这里不会访问数据库&#xff0c;origins只是一…