• 在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;
        }
    }
    View Code

    在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;
        }
    }
    View Code 

    自定义的规则:

    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 ? "女" : "男";
        }
    
    
    }
    View Code

    Controller层

    运行结果(DeBUG模式):

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

    响应回来的数据结果:

      ^_^  越害怕越落后。

  • 相关阅读:
    3--jsp编译指令和动作指令
    2-hello world
    1.搭建JSP开发环境
    4-Http通信
    P1879 [USACO06NOV]玉米田Corn Fields
    P3110 [USACO14DEC]驮运Piggy Back
    P2327 [SCOI2005]扫雷
    P1004 方格取数
    P2854 [USACO06DEC]牛的过山车Cow Roller Coaster
    P1353 [USACO08JAN]跑步Running
  • 原文地址:https://www.cnblogs.com/oukele/p/10042607.html
Copyright © 2020-2023  润新知