zoukankan      html  css  js  c++  java
  • java MVC 自定义类型转换器(Formatter、AnnotationFormatterFactory)

    下面一个事例,是将传入的一个身份证号,转换成一个对象(提取身份证号的地址、出身日期、性别等)

    实体类 Person 有三个字段如下:

        String province; //地址
    
        Date birthday;  //出生日期
    
        String sexual;  //性别
    
        Getter... Setter...

    验证器实现 PersonFormatter

    实现 Formatter 接口

    public class PersonFormatter implements Formatter<Person> {
        @Override
        public Person parse(String text, Locale locale) throws ParseException {
          //text参数是传进来的字符串,需要对字符串(身份证号)进行解析,并且保存到Person对象返回
    return new Person(); } @Override public String print(Person object, Locale locale) { return null; } }

    自定义 PersonFormatterAnnotation 类,实现 AnnotationFormatterFactory 接口:

    public class PersonFormatterAnnotation implements AnnotationFormatterFactory<PersonFormId> {
        @Override
        public Set<Class<?>> getFieldTypes() {
            Set<Class<?>> types = new HashSet<>();
            types.add(Person.class);
            return types;
        }
    
        @Override
        public Printer<?> getPrinter(PersonFormId annotation, Class<?> fieldType) {
            return null;
        }
    
        @Override
        public Parser<?> getParser(PersonFormId annotation, Class<?> fieldType) {
            return getFormatter(annotation);
        }
    
        private Formatter getFormatter(PersonFormId annotation) {
            return new PersonFormatter();
        }
    }

    spring xml文件代码:

        <!-- 配置类型装换器 -->
        <bean name="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
            <property name="formatters">
                <set>
                    <bean class="com.nf.lc.formatter.PersonFormatterAnnotation"></bean>
                </set>
            </property>
        </bean>

    spring中注册:

        <!-- 启用MVC的常用注解 -->
        <mvc:annotation-driven conversion-service="conversionService" />
  • 相关阅读:
    辗转相除法求最大公约数
    洛谷——P2615 神奇的幻方 【Noip2015 day1t1】
    二分图的一大泼基础题
    HDU——T 1150 Machine Schedule
    HDU——T 1068 Girls and Boys
    POJ——T 3020 Antenna Placement
    Web框架Django(二)
    February 25 2017 Week 8 Saturday
    February 24 2017 Week 8 Friday
    February 23 2017 Week 8 Thursday
  • 原文地址:https://www.cnblogs.com/ldl326308/p/10042947.html
Copyright © 2011-2022 走看看