java MVC 自定义类型转换器(Formatter、AnnotationFormatterFactory)
下面一个事例,是将传入的一个身份证号,转换成一个对象(提取身份证号的地址、出身日期、性别等)
实体类 Person 有三个字段如下:
    String province; //地址
    Date birthday;  //出生日期
    String sexual;  //性别
    Getter... Setter...
验证器实现 PersonFormatter:
实现 Formatter 接口,
public class PersonFormatter implements Formatter<Person> {
    @Override
    public Person parse(String text, Locale locale) throws ParseException {
      //text参数是传进来的字符串,需要对字符串(身份证号)进行解析,并且保存到Person对象返回
        return new Person();
    }
    @Override
    public String print(Person object, Locale locale) {
        return null;
    }
}
自定义 PersonFormatterAnnotation 类,实现 AnnotationFormatterFactory 接口:
public class PersonFormatterAnnotation implements AnnotationFormatterFactory<PersonFormId> {
    @Override
    public Set<Class<?>> getFieldTypes() {
        Set<Class<?>> types = new HashSet<>();
        types.add(Person.class);
        return types;
    }
    @Override
    public Printer<?> getPrinter(PersonFormId annotation, Class<?> fieldType) {
        return null;
    }
    @Override
    public Parser<?> getParser(PersonFormId annotation, Class<?> fieldType) {
        return getFormatter(annotation);
    }
    private Formatter getFormatter(PersonFormId annotation) {
        return new PersonFormatter();
    }
}
spring xml文件代码:
<!-- 配置类型装换器 -->
<bean name="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<set>
<bean class="com.nf.lc.formatter.PersonFormatterAnnotation"></bean>
</set>
</property>
</bean>
spring中注册:
<!-- 启用MVC的常用注解 -->
<mvc:annotation-driven conversion-service="conversionService" />
java MVC 自定义类型转换器(Formatter、AnnotationFormatterFactory)的更多相关文章
- Spring MVC 自定义类型转换器
		新建一个自定义转换器 import org.springframework.core.convert.converter.Converter; import org.springframework.s ... 
- [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器
		本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ... 
- 自定义类型转换器 及 使用 ServletAPI 对象作为方法参数
		自定义类型转换器使用场景: jsp 代码: <!-- 特殊情况之:类型转换问题 --> <a href="account/deleteAccount?date=2018- ... 
- 0023SpringMVC自定义类型转换器
		页面录入的字符串:2019/12/05可以映射到实体的日期属性上,但是如果是录入2019-12-05就会报错400 bad request,想要以2019-12-05日期格式的方式映射到实体的日期属性 ... 
- springmvc中如何自定义类型转换器
		package com.hope.utils;import org.springframework.core.convert.converter.Converter;import org.spring ... 
- Struts2框架的自定义类型转换器
		前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ... 
- sruts2 自定义类型转换器
		1.1.1 Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP ... 
- Struts2之自定义类型转换器
		Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ... 
- 自定义类型转换器converter
		作用:目前将日期转换成string,将string转换成我想要的类型 0509课件里讲 一.数据类型转换在web应用程序中,数据存在两个方向上的转换:1.当提交表单时 表单数据以字符串的形式提交 ... 
随机推荐
- android 设置无标题栏主题
			<application android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 
- luffy项目:基于vue与drf前后台分离项目(1)
			""" 1.业务逻辑:登录注册 - 主页(基础信息展示) - 课程页(复杂信息展示)- 课程订单生产与支付 - 上线订单生成 2.实际项目开发的技术点: git版本控制 ... 
- vector内部实现2
			push_back 往动态数组的内部进行添加数据 pop_back 往动态数组的尾部进行删除数据 resize 讲元素的数量len改成num个数量 如果size()变大了,多出来的将用默认构造来创 ... 
- Python 学习笔记:Python 操作 SQL Server 数据库
			最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ... 
- JavaScript学习笔记 - 入门篇(2)- 常用互动方法
			输出内容(document.write) document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用""括起,直 ... 
- 时间API
			1. 时间API 我们的时间在java里是long类型的整数,这个整数称之为时间戳(也叫格林威治时间),即从1970-01-01到现在为止所经过的毫秒数,单有这个时间戳是不能准确表达世界各地的时间,还 ... 
- [Python]安装和运行flask框架
			随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库.同一个 Python 库的不同版本可能不兼容.虚拟环境可以为每一个项目安装独立的 Python 库,这样 ... 
- Python——课程数据统计分析
			介绍 在该章节中我们将利用提供的课程数据来进行一次实战性质的时间序列和聚类分析. 知识点 数据处理 数据可视化 中文分词 文本聚类 数据概览 本次课程的数据来源于运行过程中产生的真实数据,我们对部分数 ... 
- Java之异常的处理(throws)
			import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java. ... 
- [GX/GZOI2019]旧词(树上差分+树剖+线段树)
			考虑k=1的做法:这是一道原题,我还写过题解,其实挺水的,但当时我菜还是看题解的:https://www.cnblogs.com/hfctf0210/p/10187947.html.其实就是树上差分后 ... 
