在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 MVC 中配置自定义的类型转换器

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

在Spring MVC 中配置自定义的类型转换器

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

在Spring MVC 中配置自定义的类型转换器

现在 我拿一个实体类试一下我的自定义的规则。

实体类(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层

在Spring MVC 中配置自定义的类型转换器

运行结果(DeBUG模式):
在Spring MVC 中配置自定义的类型转换器

当这个数据请求到后台时,类型转换器就自动帮我转换了数据

在Spring MVC 中配置自定义的类型转换器

响应回来的数据结果:

在Spring MVC 中配置自定义的类型转换器

^_^  越害怕越落后。

上一篇:Java时间日期格式转换Date转String和String转Date


下一篇:Android笔记——permission权限大全