springmvc 绑定枚举类型数据

本文介绍了如何在SpringMVC中处理枚举类型数据的自动绑定。通过配置ConversionService和使用自定义的StringToEnumConverterFactory转换器,可以实现表单中String值与Enum类的匹配。只需确保表单value为BOY或GIRL,系统将自动进行正确绑定。若需根据id值绑定,可调整转换类的convert方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值