关闭

springmvc 绑定枚举类型数据

标签: springmvcEnum
5024人阅读 评论(0) 收藏 举报
分类:

在开发的过程中,会涉及到大量的枚举类型数据,我们都知道,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


0
0

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27545次
    • 积分:439
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条
    文章分类