springmvc 绑定枚举类型数据

原创 2015年01月22日 10:55:42

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


springMVC 枚举传值问题

今天遇到算是棘手的一个枚举的问题,后台Controller参数是一个对象,而对象里面有个枚举类型的属性,死活不能传值。 最后找到解决方案: 实体对象: @Entity @Table(name...

Spring MVC 自动为对象注入枚举类型

如果一个对象里面有枚举类型的话,则Spring MVC是不能够直接进行注入的,因为它只实现了一些基本的数据类型的自动转换注入,但是其也提供了可扩展的接口,可以根据自己的需要来进行扩展。下面是一个示例:...

spring注入枚举类型作为参数

//定义枚举类型 public enum ReportType { MONTH,WEEK,DAY } //使用枚举类型 public class ReportJob { privat...

Spring Boot绑定枚举类型参数

一、概述 在利用Spring进行Web后台开发时,经常会遇到枚举类型的绑定问题。一般情况下,如果Spring接收到的参数值为字符串类型,Spring会根据枚举的值与传入的字符串进行对应。假设有如下枚举...

springmvc 绑定枚举类型数据

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

springmvc的contronller之间携带参数的跳转

http://blog.csdn.net/qq_36769100/article/details/70886951 1、首先说一下不带参数的重定向格式:   ...

springMVC与MyBatis中绑定枚举类型数据的转换

最近项目中遇到这样一个:后台Controller参数是一个对象,对象里面有个枚举类型的属性,前台提交过来的数据里面这个枚举该怎么接收呢,如何写进数据库? 数据库用的MySQL, 该枚举字段为: ...

spring依赖注入枚举类型

//定义枚举类型   public enum ReportType {       MONTH,WEEK,DAY   }      //使用枚举类型   public class Repo...

详解SpringMVC 自动封装枚举类的方法

springmvc默认无法自动封装枚举类,本篇文章主要介绍了详解SpringMVC 自动封装枚举类的方法,有兴趣的可以了解一下。 springmvc默认无法自动封装枚举类,解决方...

springmvc 中model中放入枚举类型

我们直接看例子: Map mallMap = new HashMap(); mallMap.put(MallStatus.SELFMALL.toString(), MallStatus.SELF...
  • baicp3
  • baicp3
  • 2014年06月23日 09:29
  • 2118
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:springmvc 绑定枚举类型数据
举报原因:
原因补充:

(最多只允许输入30个字)