我是靠谱客的博主 眼睛大纸鹤,最近开发中收集的这篇文章主要介绍springmvc 绑定枚举类型数据springmvc 绑定枚举类型数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

springmvc 绑定枚举类型数据

在开发的过程中,会涉及到大量的枚举类型数据,我们都知道,Springmvc本身能自动转换很多的数据类型,也支持你自定义转换类型,非常灵活。

Enum类型的变量,在form表单里,传过来的value是个String类型值,那么我们需要让它自动匹配到对应的Enum类上去。

配置如下:

spring配置:

<!-- 枚举类型自动绑定 -->
    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.ziwow.pay.ws.convert.StringToEnumConverterFactory" />
            </set>
        </property>
    </bean>

另外这里加上

<mvc:annotation-driven  conversion-service="conversionService"/>

StringToEnumConverterFactory是一个通用的转换类,如果你要实现自己定制的转换类,也可以自己去实现,按照规范,实现ConverterFactory即可。
代码如下

@SuppressWarnings("unchecked")
final class StringToEnumConverterFactory implements
		ConverterFactory<String, Enum> {
 
	public <T extends Enum> Converter<String, T> getConverter(
			Class<T> targetType) {
		return new StringToEnum(targetType);
	}
 
	private class StringToEnum<T extends Enum> implements Converter<String, T> {
 
		private final Class<T> enumType;
 
		public StringToEnum(Class<T> enumType) {
			this.enumType = enumType;
		}
 
		public T convert(String source) {
			if (source.length() == 0) {
				return null;
			}
			return (T) Enum.valueOf(this.enumType, source.trim());
		}
	}
 
}

比如我有个Enum类,是GenderEnum类

  public enum GenderEnum{
  	  BOY(1,"boy"),GIRL(2,"girl")
  	  
    }

那我的表单里,gender对应的value,只要是BOY或者GIRL,它就能自动匹配绑定好了,如果你要根据id的值来绑定,那就修改上面的StringToEnumConverterFactory类,修改它的convert方法即可。

参考:http://haohaoxuexi.iteye.com/blog/1860732
原文:https://blog.csdn.net/china_bobo/article/details/43016415

我的一开始没有转换成功是因为编码问题,后台加一个编码过滤器就好了

最后

以上就是眼睛大纸鹤为你收集整理的springmvc 绑定枚举类型数据springmvc 绑定枚举类型数据的全部内容,希望文章能够帮你解决springmvc 绑定枚举类型数据springmvc 绑定枚举类型数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部