Converter主要使用于将前端数据转换为java对应的对象。比如把前端传入的字符串转换为Date类型数据
使用方法
@Component
public class StringToDateConverter implements Converter<String, Date> {
public static final Logger logger = LoggerFactory.getLogger(StringToDateConverter.class);
static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
/**
* 格式转换的还需要
* @param source
* @return
*/
@Override
public Date convert(String source) {
Date date = new Date();
try {
date = simpleDateFormat.parse(source);
} catch (ParseException e) {
logger.info(source + "转换异常");
e.printStackTrace();
}
return date;
}
}
Converter<String, Date>
将String类型转换为Date类型,是一个函数接口
主要转换方法在 public Date convert(String source)当中*
不仅可以处理已有的数据类型,还可以处理对应的枚举类型
为了方便,前端在往后端传数据的时候可以值传对应的id,由后端自行处理
枚举
public enum VideoTypeEnum {
//'电影类型 0 其他 1 动画 2 恐怖 3 爱情 4 动作 5 喜剧',
ELSE(0,"其他类型"),
CARTOON(1, "动画"),
DRACULA(2, "恐怖"),
LOVE(3, "爱情"),
ACTION(4, "动作"),
COMEDY(5, "喜剧");
private int id;
private String type;
VideoTypeEnum() {
}
VideoTypeEnum(int i, String s) {
this.id = i;
this.type = s;
}
public int getId() {
return id;
}
public String getType() {
return type;
}
public static void main(String[] args) {
for (VideoTypeEnum value : VideoTypeEnum.values()) {
System.out.println(value.toString() + " " + value.ordinal());
}
System.out.println(VideoTypeEnum.valueOf("ELSE"));
}
/**
* 根据id返回前端的VideoTypeEnum
* @param id
* @return
*/
public static VideoTypeEnum getEnumById(int id){
switch (id){
case 1:
return VideoTypeEnum.CARTOON;
case 2:
return VideoTypeEnum.DRACULA;
case 3:
return VideoTypeEnum.LOVE;
case 4:
return VideoTypeEnum.ACTION;
case 5:
return VideoTypeEnum.COMEDY;
default:
return VideoTypeEnum.ELSE;
}
}
@Override
public String toString() {
return "VideoTypeEnum{" +
"id=" + id +
", type='" + type + '\'' +
'}';
}
}
对应的类型转换器
@Component
public class StringToEnumConverter implements Converter<Integer, VideoTypeEnum> {
@Override
public VideoTypeEnum convert(Integer source) {
return VideoTypeEnum.getEnumById(source);
}
}