在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 并调用相应的方法以响 ...
随机推荐
- DARTS代码分析(Pytorch)
最近在看DARTS的代码,有一个operations.py的文件,里面是对各类点与点之间操作的方法. OPS = { 'none': lambda C, stride, affine: Zero(st ...
- ORACLE 左连接 右连接 内连接 外连接 全连接 五中表连接方式
1.左连接 :left join 2.右连接:right join 3.内连接:inner join 4.外连接:outer join 5.全连接:full join
- 【Python开发】PyQt5应用与实践
一个典型的GUI应用程序可以抽象为:主界面(菜单栏.工具栏.状态栏.内容区域),二级界面(模态.非模态),信息提示(Tooltip),程序图标等组成.本篇根据作者使用PyQt5编写的一个工具,介绍如何 ...
- 获取JSON中所有的KEY
采用递归的方式,遍历JSON中所有的KEY. JSON格式如下: {"username":"tom","age":18,"addr ...
- PostgreSQL unlogged表
PostgreSQL有一种介于正常表和临时表之间的类型表,称之为unlogged表,在该表新建的索引也属于unlogged,该表在写入数据时候并不将数据写入到持久的write-ahead log文件中 ...
- ORACLE数据库备份与恢复详解
ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻 ...
- Python学习【day02】- 运算符与基本类型
Python语言支持以下类型的运算符: 算术运算符 操作符 描述 示例(a=10.b=21) + 加法 相加运算两侧的值 a + b = 31 - 减法 操作符右侧数减去左侧操作数 a – b = - ...
- Maven简单项目及命令使用
项目结构如下 HelloWorld.java package pak1; public class HelloWorld { public String sayHello(){ return &quo ...
- 走环概率问题(至今有点迷)--牛客第二场( Eddy Walker)
思路: 概率结论题,好像属于线性递推,现在也不太懂(lll¬ω¬) #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include < ...
- qt treaview项checkbox样式
QTreeView::indicator:enabled:checked { /** 指示器 - 选中 **/ image: url(yzfx/checkbox_checked.png);}QTree ...