Spring MVC处理参数中的枚举类型通用实现方法
2019-01-23 12:21
2491 查看
前言
在开发的过程中,会涉及到大量的枚举类型数据,我们都知道,Springmvc本身能自动转换很多的数据类型,也支持你自定义转换类型,非常灵活。
本文主要介绍的是关于Spring MVC处理参数的枚举类型通用实现的相关内容,下面话不多说了,来一起看看详细的介绍吧
业务场景:
前端提交了枚举的一个属性value,想由spring来完成参数类型自动转换成对应的枚举。
比方有一个枚举
@AllArgsConstructor(access = AccessLevel.PRIVATE) @Getter @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum RegisterStatus implements SpringConverterableEnum { WAITING(0, "待审核"), PASSED(1, "已通过"), REJECTED(2, "已拒绝"); private int value; private String desc; }
实现统一自定义接口
需要自动转换的枚举实现统一自定义接口,可随意定义,此处直接用get方法
public interface SpringConverterableEnum { int getValue(); }
实现ConverterFactory
实现某一个class的类型自动转换,实现converter接口。要实现能支持多种枚举的通用转换,应当实现ConverterFactory接口。
实现中利用class提供的getEnumConstants来获得任意枚举类型的values
public class ValuedEnumConverter implements ConverterFactory<String, SpringConverterableEnum> { @Override public <T extends SpringConverterableEnum> Converter<String, T> getConverter(Class<T> targetType) { return new IntegerToEnum(targetType); } private class IntegerToEnum<T extends SpringConverterableEnum> implements Converter<String, T> { private final T[] values; public IntegerToEnum(Class<T> targetType) { values = targetType.getEnumConstants(); } @Override public T convert(String source) { for (T t : values) { if (t.getValue() == Integer.valueOf(source)) { return t; } } return null; } } }
注册到Spring中
<mvc:annotation-driven conversion-service="conversionService"/> <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionService"> <property name="converters"> <list> <bean class="com... ValuedEnumConverter"/> </list> </property> </bean>
之后,form或者ajax提交registerStatus=1时,则会自动转换为枚举对象。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
相关文章推荐
- SpringMVC处理参数中的枚举类型通用实现
- struts2的常量、动态方法调用、接受请求参数处理、类型转换 .
- 用泛型实现对枚举的通用处理
- Spring MVC学习之三:处理方法返回值的可选类型
- Spring MVC学习之三:处理方法返回值的可选类型
- 一个类实现一个接口,可以重写接口中方法的参数类型吗?
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 【Spring MVC学习之处理方法返回值的可选类型】
- Spring MVC控制器方法参数类型
- Winform界面中实现通用工具栏按钮的事件处理方法
- C# 数据库sql中用参数的方法来执行UPDATE命令,实现更新dataTime类型
- XFire实现自定义类型参数传递和调用返回自定义类型方法
- Spring MVC学习之处理方法返回值的可选类型
- Spring MVC学习之三:处理方法返回值的可选类型
- Spring MVC学习:处理方法返回值的可选类型
- spring mvc处理提交的时间类型的参数
- 单元素的枚举类型已经成为实现Singleton的最佳方法
- Spring MVC处理方法返回值的可选类型
- boost 中的模板多参数根据N来提取第N个参数的类型 (tuple的实现中用到) tuple的自己的简单实现,仅带get方法
- Spring MVC学习之三(处理方法返回值的可选类型)