在Spring MVC 中配置自定义的类型转换器
方法一:
实现spring mvc 自带的 Formatter 接口
1、创建一个类来实现Formatter接口
import org.springframework.format.Formatter;
import java.text.ParseException;
import java.util.Locale; public class MyFormatter implements Formatter<CardId> { @Override
public String print(CardId object, Locale locale) {
return null;
} @Override
public CardId parse(String text, Locale locale) throws ParseException {
return null;
}
}

在spring-web.xml(配置文件中,注册类型转换器)

(提示:这个只是注册类型转换器而已,要使用还需要启用名为 conversionService 的转换器)

现在 我拿一个实体类试一下我的自定义的规则。
实体类(CartId):
package com.oukele.model;
import java.util.Date;
public class CardId {
//身份证
private String info;
//省份
private String Province;
//出生日期
private Date birthday;
//性别
private String sex;
public CardId(String province, Date birthday, String sex) {
Province = province;
this.birthday = birthday;
this.sex = sex;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getProvince() {
return Province;
}
public void setProvince(String province) {
Province = province;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
自定义的规则:
package com.oukele.CustomAnnotation; import com.oukele.model.CardId;
import org.springframework.format.Formatter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale; public class MyFormatter implements Formatter<CardId> { // 输出
@Override
public String print(CardId object, Locale locale) {
return null;
}
// 转换
@Override
public CardId parse(String text, Locale locale) throws ParseException {
//获取传入的身份证号
//然后截取对应的数字,给CardId的省份、出生日期、性别 赋值
return new CardId(getProvince(text),getBirth(text),getSex(text));
} private String getProvince(String car){
return "暂无数据";
} private Date getBirth(String car) throws ParseException {
return new SimpleDateFormat("yyyyMMdd").parse(car.substring(6, 14));
} private String getSex(String car) {
// 17: 偶数 女,奇数 男
return car.charAt(16) % 2 == 0 ? "女" : "男";
} }
Controller层

运行结果(DeBUG模式):
当这个数据请求到后台时,类型转换器就自动帮我转换了数据

响应回来的数据结果:

^_^ 越害怕越落后。
在Spring MVC 中配置自定义的类型转换器的更多相关文章
- struts2中配置全局日期类型转换器
1.编写一个类,继承StrutsTypeConverter,实现其中的convertFromString和convertToString方法,该类如下: package me.edu.utils; i ...
- spring mvc+myBatis配置详解
一.spring mvc Spring框架(框架即:编程注解+xml配置的方式)MVC是Spring框架的一大特征,Spring框架有三大特征(IOC(依赖注入),AOP(面向切面),MVC(建模M- ...
- Spring MVC中@RequestMapping注解使用技巧(转)
@RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...
- Http请求中Content-Type讲解以及在Spring MVC中的应用
引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值 ...
- Http请求中Content-Type和Accept讲解以及在Spring MVC中的应用
在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...
- [转]Http请求中Content-Type讲解以及在Spring MVC中的应用
本文转自:http://blog.csdn.net/blueheart20/article/details/45174399 引言: 在Http请求中,我们每天都在使用Content-type来指定不 ...
- Mybatis中使用自定义的类型处理器处理枚举enum类型
知识点:在使用Mybatis的框架中,使用自定义的类型处理器处理枚举enum类型 应用:利用枚举类,处理字段有限,可以用状态码,代替的字段,本实例,给员工状态字段设置了一个枚举类 状态码,直接赋值给对 ...
- Spring MVC 中的基于注解的 Controller【转】
原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 H ...
- Spring MVC中基于注解的 Controller
终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响 ...
随机推荐
- A = min(1, max(0, A))
Crop A into [0, 1]:
- eclipse 建立 web fragment project 工程
1.鼠标右键---------new ---------Other 2.选择WEB----web fragment project 3.输入工程名,点finish
- C#实现多线程的方法:线程(Thread类)和线程池(ThreadPool)
简介 使用线程的主要原因:应用程序中一些操作需要消耗一定的时间,比如对文件.数据库.网络的访问等等,而我们不希望用户一直等待到操作结束,而是在此同时可以进行一些其他的操作. 这就可以使用线程来实现. ...
- CDH6.2安装之离线方式
参考: https://www.cnblogs.com/swordfall/p/10816797.html 下载parcels: https://archive.cloudera.com/cdh6/6 ...
- mysql的授权命令
#查看用户select user,host from mysql.user; (root,%),表示可以远程登录,并且是除服务器外的其他任何终端, 如CREATE USER 'azkaban'@'19 ...
- 卸载mysql后再安装提示The service already exists!问题解决方法
卸载mysql后再安装输入mysqld --install 回车后提示The service already exists! 原因:卸载的时候没有卸载干净 方法: 一.重新以管理员身份打开cmd 二. ...
- MySQL_入手<一>增--数据库操作
创建数据库 create database db_sanguo charset utf8; 切进db_sanguo use db_sanguo 创建英雄 create table t_hero( id ...
- 数据结构(四) 图(Graph)
在图形结构中,结点之间的关系可以是任意的. 一.图 图由定点(vertex)和边(edge)两个有限集合组成: Graph=(V,R) V是定点集,R={E},E是边集. 有向图(directed n ...
- linux增加swap大小
参考自:https://blog.csdn.net/ssrmygod/article/details/70157716 我在centos6.5上照着操作成功了首先查一下目前swap的大小: [root ...
- easyui在table单元格中添加进度条
function XR_jd(alue, rowData, rowIndex){ var value; ...... var htmlstr = '<div class="easyui ...