• Spring MVC自动为对象注入枚举数据


    一、实现转换工厂,定义转换实现,如下:
     
     
    package com.mafwo;
    
    import org.springframework.core.convert.converter.Converter;
    import org.springframework.core.convert.converter.ConverterFactory;
    
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class OrdinalToEnumConverterFactory implements ConverterFactory<String, Enum<?>> {
    
    @Override
    public <T extends Enum<?>> Converter<String, T> getConverter(Class<T> targetType) {
    return new OrdinalToEnum<T>(targetType);
    }
    
    private class OrdinalToEnum<T extends Enum<?>> implements Converter<String, T> {
    
    private final Class<T> enumType;
            
             public OrdinalToEnum(Class<T> enumType) {
    this.enumType = enumType;
    }
    
    @Override
    public T convert(String source) {
    // 转换成数字
    int ordinal = Integer.valueOf(source);
                 if(ordinal == Integer.MIN_VALUE) {
    return null;
    }
                 Object temp = null;
                 try {
                     Method getCode = enumType.getMethod("getCode");
    
    Object[] objects = enumType.getEnumConstants();
                     for(Object ob: objects){
                        Integer temps = (Integer) getCode.invoke(ob);
                         if(temps == ordinal)
                         {
                             temp = ob;
                             break;
    }
    
                     }
    
                 } catch (NoSuchMethodException e) {
                     e.printStackTrace();
    } catch (InvocationTargetException e) {
                     e.printStackTrace();
    } catch (IllegalAccessException e) {
                     e.printStackTrace();
    }
    return (T) temp;
    }
    
         }
     }
    

      

    二、在spring配置文件中配置:
    <!--注意在配置转换鼓舞之后需要在 注解驱动处声明-->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
    
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
    <!-- 自动将枚举类型的序列号解析称枚举类型 -->
    <bean class="com.mafwo.OrdinalToEnumConverterFactory" />
            </set>
        </property>
    </bean>
    

      

    之后就可以使用注解方式自动注入枚举类型数据。

     

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/xiuluo--angel/p/7097013.html
Copyright © 2020-2023  润新知