Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SpringMVC注解 @initbinder 解决类型转换问题

SpringMVC注解 @initbinder 解决类型转换问题

作者头像
微风-- 轻许--
发布于 2019-07-02 06:07:40
发布于 2019-07-02 06:07:40
60500
代码可运行
举报
文章被收录于专栏:java 微风java 微风
运行总次数:0
代码可运行

使用 SpringMVC 时,常遇到表单中日期字符串和 JavaBean 的 Date 类型的转换,而 SpringMVC 默认不支持这个格式的转换,故需要手动配置,自定义数据的绑定才能解决这个问题。 在需要日期转换的 Controller 中使用 SpringMVC 的注解 @initbinder 和 Spring 自带的 WebDateBinder 类来操作。 WebDataBinder 是用来绑定请求参数到指定的属性编辑器.由于前端传到 controller 里的值是 String 类型的,当往 Model 里 Set这个值的时候,如果 set 的这个属性是个对象,Spring 就会去找到对应的 editor 进行转换,然后再 SET 进去。 代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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的配置文件加上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- 解析器注册 -->  
<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"/> 

换种写法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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源码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor) {
    getPropertyEditorRegistry().registerCustomEditor(requiredType, propertyEditor);
}

第一个参数 requiredType 是需要转化的类型。 第二个参数 PropertyEditor 是属性编辑器,它是个接口,以上提到的如 CustomDateEditor 等都是继承了实现了这个接口的PropertyEditorSupport 类。 我们也可以不使用他们自带的这些编辑器类。 我们可以自己构造:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.beans.propertyeditors.PropertiesEditor;

public class DoubleEditor extends PropertyEditorSupport {
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        if (text == null || text.equals("")) {
            text = "0";
        }
        setValue(Double.parseDouble(text));
    }

    @Override
    public String getAsText() {
        return getValue().toString();
    }
}

转自:https://www.cnblogs.com/soundcode/p/6519036.html

另一举例文章见 :SpringMvc 注解 @InitBinder 表单多对象精准绑定接收

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
jQuery1.jQuery简介及使用2.jQuery语法3.jQuery选择器4,jQuery 事件函数及效果显示
jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。(write less,do more.)
Python攻城狮
2018/08/23
2.3K0
jQuery1.jQuery简介及使用2.jQuery语法3.jQuery选择器4,jQuery 事件函数及效果显示
JavaScript学习笔记(四)—— jQuery入门
子元素伪类选择器就是选择某一个元素下面的子元素的方式,在jQuery中,子元素伪类选择器分为两大类:
wsuo
2020/07/31
11.2K0
jQuery选择器大全(48个代码片段+21幅图演示)1
选择器是jQuery最基础的东西,本文中列举的选择器基本上囊括了所有的jQuery选择器,也许各位通过这篇文章能够加深对jQuery选择器的理解,它们本身用法就非常简单,我更希望的是它能够提升个人编写jQuery代码的效率。本文配合截图、代码和简单的概括对所有jQuery选择器进行了介绍,也列举出了一些需要注意和区分的地方。 一、基本选择器 1. id选择器(指定id元素) 将id="one"的元素背景色设置为黑色。(id选择器返单个元素) $(document).ready(function () {
逸鹏
2018/04/10
2K0
jQuery选择器大全(48个代码片段+21幅图演示)1
jQuery选择器大全(48个代码片段+21幅图演示)2
4. 属性过滤选择器 ——4.1 [attribute](取拥有attribute属性的元素) 下面的代码,最后一个a标签没有title属性,所以它仍然会带下划线 <script type="text
逸鹏
2018/04/10
1.6K0
jQuery选择器大全(48个代码片段+21幅图演示)2
[jQuery学习系列一]1-选择器与DOM对象
前言: 好久没有更新博客了, 最近想复习下 之前学过的JS的相关内容, 也算是自己的一种总结. 知识长时间不用就会忘记, 多学多记多用!! 下面的程序都可以在下面的网站进行在线调试:  http://
一枝花算不算浪漫
2018/05/18
2.9K0
jquery常用选择器
在Dom 编程中我们只能使用有限的函数根据id 或者TagName 获取Dom 对象. 然而在jQuery 中则完全不同,jQuery 提供了异常强大的选择器用来帮助我们获取页面上的对象, 并且将对象以jQuery 包装集的形式返回。本文主要对常用的jQuery 选择器进行一个介绍及归类。 jQuery 选择器大体上可分为 4 类:基本选择器、层次选择器、过滤选择器、表单选择器。 其中过滤选择器可以分为:简单过滤选择器、内容过滤选择器、可见性过滤选择器、属性过滤选择器、子元素过滤选择器、表单对象属性过滤选择
java达人
2018/01/31
6820
CSS3新增选择器
都知道css有三个简单常用的选择器,#id、class和标签选择器。但是css3又新增了一些选择器,可以减少结构代码中ID属性和class属性的定义。使用它们可以减少不少冗杂的代码,便捷开发。下面介绍:
全栈程序员站长
2022/09/14
5710
CSS3新增选择器
jQuery选择器(20171026)
一.jq与js再比较看优势 看案例(好友列表) 结构: <div id="con" class="center"> <ul id="friendslist"> <li> <p class="border_bottom">我的好友</p> <ul> <li>张三</li> <li>李四</li> <li>王五</li>
天天_哥
2018/09/29
9370
javaWeb核心技术第五篇之jQuery
- 概述 - jQuery是一个优秀的javascript框架(js类库),兼容css3和各大浏览器,提供dom,events,animate,ajax等简易的操作。并且jQuery有非常丰富的插件,大多数功能都有相应的插件解决方案。jQuery的宗旨是write less, do more. (写的更少,做的更多) - jQuery入门 - jQuery和html整合 - 下载 - 下载地址:www.jquery.com - 使用script的src属性即可
海仔
2019/08/26
8.1K0
jQuery选择器、元素属性操作--jQuery基础知识点(1)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
6580
JQuery 入门学习(二)
时隔几天,天气依旧炎热,不过坐在空调房里的我一点也感觉不到~(笑)。我的事也在稳步进行着,这个下午继续我上一篇的Jquery。
phith0n
2020/10/15
1.3K0
Web前端学习笔记之jQuery选择器
经过一晚上的查找整理,终于整理出一套应该算最全面的JQuery选择过滤器的方法了。所有代码均经过测试。 首先HTML代码
Jetpropelledsnake21
2018/08/01
1.4K0
『真香警告』这33个超级好用的CSS选择器,你可能见都没见过。
CSS 选择器也是如此,然而如今也已经发布了第四版 —— CSS Selectors Level 4 ,这一版最早的草案发布于2011年09月29日,最后更新是2018年11月21日。
陈大鱼头
2020/07/16
4670
『真香警告』这33个超级好用的CSS选择器,你可能见都没见过。
JavaWeb(八)JQuery
jQuery 市场用得比较多两个框架: jQuery 比较适合做一些互联网 的应用(12306.com,蘑菇街,美丽说,聚美) extjs 比较适合做后台管理系统(电商(订单管理),银行,电信) 核心: 主要功能:javascript开发人员查找元素、操作DOM、处理事件、执行动画和开发Ajax的操作。优势:(宗旨:write less ,do more 写更少的代码,做更多的事情) 1:轻量级 (js 库非常小) 2:强大的选择器(获取页面上面的dom 元素 document.getElementByI
二十三年蝉
2018/02/28
1.8K0
WEB入门之十三 jQuery选择器
上一章我初步接触了jQuery,并能够编写一些简单的jQuery代码,其中重点是jQuery基本选择器。jQuery的选择器非常强大,它是jQuery的根基,基本上任何操作都要依赖于选择器。本章重点学习jQuery选择器,包括层次选择器、属性选择器、表单选择器、内容选择器和过滤选择器等。
用户9184480
2024/12/17
1170
WEB入门之十三  jQuery选择器
04 . 前端之JQuery
JQuery简介 # 1. jQuery是一个轻量级的、兼容多浏览器的JavaScript库。 # 2. jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便
iginkgo18
2020/09/27
3.5K0
jQuery的基本操作
jQuery就是一个js的库· 主要分为两部分:            1·寻找元素         (选择器,筛选器)            2·操作元素          (CSS的操作,属性的操作,文本的处理) 选择器 基本  #id    #id //用于搜索的,通过元素的id属性中给定的值 描述:(查找ID为myDiv的元素) HTML代码: <div id="notMe"><p>id = "notMe"</p></div> <div id="myDiv">id="m
Wyc
2018/09/11
7.6K0
jQuery基础系列
jquery的入口函数是在html所有标签都加载后才执行,而JavaScript的window.onload事件是等到所有内容加载完后才执行。
达达前端
2019/07/03
2.6K0
jQuery基础系列
jquary学习(二)jquary的使用,jQuery中的选择器
目录 首先在官网下载jquary的js文件 html页面文件里面引入 jQuery中的选择器 基本选择器id 选择器标签选择器 (“a”)类选择器 (“.class”) 首先在官网下载jquary的
一写代码就开心
2021/06/17
5.5K0
jquary学习(二)jquary的使用,jQuery中的选择器
零基础学前端开发之CSS3深入选择器
如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(。
用户9184480
2024/12/19
750
零基础学前端开发之CSS3深入选择器
相关推荐
jQuery1.jQuery简介及使用2.jQuery语法3.jQuery选择器4,jQuery 事件函数及效果显示
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文