`

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

阅读更多

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

 

首先:这是一个枚举类:

/**
 * 新闻类别
 * @author: ShangJianguo
 * 2014-6-11 上午10:51:07
 */
public enum ENews {

	company("0"), // 企业新闻
	industry("1");// 行业新闻

	private final String value;
	
	private ENews(String v) {
		this.value = v;
	}
	
	public String toString() {
		return this.value;
	}

	public static ENews get(int v) {
		String str = String.valueOf(v);
		return get(str);
	}

	public static ENews get(String str) {
		for (ENews e : values()) {
			if(e.toString().equals(str)) {
				return e;
			}
		}
		return null;
	}
}

 

下面是个实体类:

 

public class News {
	
	private ENews type;
	private String adminuid;
	private String title;
	private String summary;
	private String author;
	private String origin;
	private String originurl;
	private String content;

        // 省略setter和getter方法
}

 

这里是controller层:

	@RequestMapping(value="/news/update", method=RequestMethod.POST)
	@ResponseBody
	public boolean edit_update(Map<String, Object> model,HttpServletRequest request,News news){
		String adminid = getAdminid();
		news.init(adminSO.getAdminByAdminid(adminid).getUid());
		if (news != null) {
			if (newsSO.update(news)) {
				return true;
			}
		}
		return false;
	}

 

但是,到了这里程序还不能够正常的运行,真正的要点在下面,写一个枚举的转换类(Converter):

 

public class StringToENewsConverter implements Converter<String, ENews>{

	/* (non-Javadoc)
	 * @see com.fasterxml.jackson.databind.util.Converter#convert(java.lang.Object)
	 * @author: ShangJianguo
	 * 2014-6-12 下午4:56:30
	 */
	@Override
	public ENews convert(String source) {
		String value = source.trim();
		if ("".equals(value)) {
			return null;
		}
		return ENews.get(Integer.parseInt(source));

	}
}

 然后在spring mvc的配置文件中进行配置:

	<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<property name="converters">
			<set>
				<bean class="com.ngenius.core.converters.StringToENewsConverter" />
				
			</set>
		</property>
	</bean>

 

这样spring在进行对对象的字段进行注入的时候就可以运行了,直接把前端接收来的内容转换为ENews类型,进行封装。

 

 私人广告模块。。。下面依然是我建的一个公众帐号,可以关注一下哦,谢谢

 

0
0
分享到:
评论
3 楼 jonsvien 2015-10-26  
师兄,我按照你的写法,转换器没有工作.配置如下
<bean id="conversionService"
		class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
		<property name="converters">
			<set>
				<bean class="com.liuhao.convert.UserStatusConvert" />
				<bean class="com.liuhao.convert.GenderConvert" />
			</set>
		</property>
	</bean>

<mvc:annotation-driven conversion-service="conversionService" />
2 楼 商人shang 2014-06-15  
350423 写道
你前台传枚举值不是更好么~传序号还得转换

我传的值就是枚举重的value值
1 楼 350423 2014-06-13  
你前台传枚举值不是更好么~传序号还得转换

相关推荐

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

    在 Spring MVC 框架中,为对象自动注入枚举类型是一项非常有用的功能。然而,默认情况下,Spring MVC 只能自动转换基本数据类型,枚举类型需要特殊处理。在本篇文章中,我们将详解如何使用 Spring MVC 自动为对象...

    zrpower7.0(Easyui-B2019-10-20-872588) java管理系统开源框架,spring mvc 搭建后台管理系统

    2. 数据字典:提供数据字典管理功能,方便维护系统中的枚举类型数据,降低了代码的耦合度,使系统更加灵活。 3. 日志记录:系统自动记录操作日志,便于追踪问题和审计,为系统运维提供依据。 4. 异常处理:具备...

    spring_FrameWork3.0

    - **为Java 5 更新的API:** Spring Framework 3.0 对 Java 5 提供了更好的支持,包括使用泛型和枚举等功能。 - **Spring 表达式语言(SPEL):** SPEL 是一种强大的表达式语言,可以在运行时查询和操作对象图。 - *...

    01.Spring框架简介_spring_spring发展历程_

    随后的2006年,Spring 2.0带来了重大改进,支持JSR-250注解、Java 5的枚举类型以及更多模块化设计。2009年,Spring 3.0发布,全面支持Java EE 6,增加了对RESTful服务、Groovy的支持,并引入了Spring Expression ...

    Spring1.x 和Spring2.x 版本上使用有什么区别

    Spring2.x全面支持Java5的特性,包括泛型、枚举、注解等,这使得代码更安全,类型检查更严格。 8. **容器改进** Spring2.x的Bean容器有所增强,支持基于ClassPath的自动扫描,可以自动发现和注册带有特定注解的类...

    spring2.5-中文API

    4. **增强了对Java 5特性的支持**:包括对枚举类型的支持以及对注解的更广泛的应用等。 ### 三、Spring的核心概念 在深入学习Spring框架之前,了解其核心概念是非常重要的,这些概念包括但不限于: 1. **IoC...

    spring-framework-2.1-m1

    Spring 2.1 还引入了对Java 5和6特性的支持,如枚举类型、注解和泛型。这使得Spring框架能够更好地利用现代Java语言的特性,提高了代码的可读性和可维护性。 在性能方面,Spring 2.1 通过优化和调整,提升了框架的...

    Spring2.5-Reference_zh_CN.txt

    - **自动装配**:Spring支持基于类型匹配的自动装配,减少了显式配置的负担。 - **属性占位符**:Spring支持使用占位符来引用外部配置文件中的值,增强了系统的灵活性。 #### 五、面向切面编程(AOP) - **AOP基础*...

    Spring in Action 3rd

    - **更好的并发支持**:Spring 3.0引入了对Java 5及更高版本特性的支持,如泛型和枚举类型。 - **新的测试工具**:提供了更强大的测试工具,帮助开发者编写单元测试和集成测试。 #### 七、实践案例与应用场景 - **...

    Spring Framework总览(Overview).pdf

    测试框架包含模拟对象、TestContext框架、Spring MVC测试和Web测试客户端,确保代码的高质量和可靠性。 Spring的版本演变与Java标准版(JDK)紧密相关,从早期支持J2EE 1.3,到后来兼容Java EE 6和7,再到目前对...

    spring-framework-reference.pdf

    通过这种方式,对象不再负责创建它们自己的依赖对象,而是通过配置文件或注解来声明这些依赖,这些依赖由Spring容器自动注入。 ##### 1.2 模块划分 Spring框架被划分为多个模块,每个模块提供了特定的功能: - **...

    spring-reference.pdf

    - **Autowiring collaborators**: 自动装配协作对象,简化了配置。 - **Checking for dependencies**: 检查Bean是否存在未满足的依赖。 - **Method Injection**: 方法级别的依赖注入。 **3.4 Bean的作用域** - **...

    使用 Spring 3 来创建 RESTful Web Services

    - 结合 `ModelAndView` 或直接返回对象,Spring MVC 将自动处理视图渲染或 JSON 反序列化。 5. **HTTP 响应状态码和头信息** - 通过 `ResponseEntity` 类设置自定义的 HTTP 状态码和头信息。 - 使用 `...

    spring的有关学习知识总结

    14. **属性编辑器**:Spring允许自定义属性编辑器(PropertyEditor)来进行类型转换,如将字符串转换为特定类型,如日期、枚举等。 综上所述,Spring框架是一个全面的开发平台,提供了许多工具和机制来简化Java应用...

    spring帮助文档

    依赖注入(DI)是一种设计模式,它通过外部机制为对象提供依赖关系,而不是在对象内部实现这些依赖。Spring通过依赖注入机制实现了控制反转(Inversion of Control, IoC)。在传统编程中,一个类负责创建其依赖的...

    spring3.1开发宝典

    Spring3.1对Java5进行了全面的更新,利用了Java5中的新特性,如泛型、枚举和注解,这使得代码更加类型安全且易于维护。 #### 2.2 改进的文档 Spring3.1的文档得到了显著的改进,提供了更清晰的示例和解释,帮助...

    spring3.1中文参考文档

    - **依赖注入**(Dependency Injection, DI)是一种设计模式,允许将对象间的依赖关系通过外部构造并注入到对象中,而不是在对象内部自行创建依赖。 - **控制反转**(Inversion of Control, IoC)是指程序的控制流程...

    Spring2.0 实例源码

    Spring MVC作为Spring框架的一部分,为构建基于模型-视图-控制器(Model-View-Controller,MVC)架构的Web应用提供了强大的工具。它支持RESTful风格的URL设计,简化了视图的渲染,并且通过HandlerMapping和...

    spring framework reference 3.0.0 RC1

    依赖注入是Spring的核心特性之一,它允许在运行时自动满足对象的依赖关系,从而提高了代码的松耦合性和可测试性。依赖可以通过构造函数、setter方法或字段注入方式实现。 Spring Framework 3.0.0 RC1不仅巩固了其在...

    spring-reference

    - 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一,它允许对象通过外部机制获取其依赖项,而不是在内部创建或查找这些依赖项。这种方式有助于解耦组件之间的依赖关系,提高了系统的可测试性和...

Global site tag (gtag.js) - Google Analytics