`

4.1spring mvc 出现“Failed to convert property value of type”解决方法

阅读更多

这个问题分成两类

  • String转换为基本类型(int,long,boolean,char...)

对与这类可以在controller的高层添加一个静态方法

@InitBinder
	protected void init(HttpServletRequest request, ServletRequestDataBinder binder) throws WebSysErrException {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
		   dateFormat.setLenient(false);
		   binder.registerCustomEditor(Date.class, new CustomDateEditor(
		     dateFormat, false));
		//initDataBinder(request, binder);
	}

 这样就可以解决一般string和date之间的转换。

  • string与自定义实体之间的转换

先描述一下:这个是一个entity

@SuppressWarnings("serial")
@MappedSuperclass
public abstract class BaseArticle<T, PK> extends ModelSupport<T, PK> {
	
	@NotEmpty(message = "内容不能为空")
	@Column(name = "content")
	private String content;
	
	@ManyToOne(optional = true)
	@JoinColumn(name = "category_id")
	private Category category;
 

在jsp中,用以下方法将其取出:

文章类别:
	<form:select path="category">
		<form:option value="">--请选择文章分类--</form:option>
		<form:options items="${categories}" itemValue="id"
 itemLabel="name"/>
	</form:select>

 但是 可以遇见,在submit后post中的category字段是一个string类型,springmvc肯定不知道如果得到索要的categroy,所以会报以下错误:

Failed to convert property value of type 'java.lang.String' to required type

 接下来是解决方法:

  1. 创建自定义转换器

 

public class CategoryEditor extends PropertyEditorSupport {

	
	public CategoryEditor(CategoryServ categoryServ) {
		super();
		this.categoryServ = categoryServ;
	}

	@Override
	public void setAsText(String text) throws IllegalArgumentException {
		if(!StringUtils.isBlank(text)) {
			Category category = categoryServ.load(Long.parseLong(text));
			setValue(category);
		}
	}
	
        //这个是业务层的服务类,按理说这个应该会被spring注入,但是经过我的测试,
        //无论是使用@autowired还是直接实例化,其均为null。
        //所以,必须在control中给其传递一个server!!!!

	private CategoryServ categoryServ;

       



}

 controller中的写法:

CategoryEditor categoryEditor = new CategoryEditor(categoryServ);
binder.registerCustomEditor(Category.class, categoryEditor);

 

这样就可以保证server是可以工作的了。

分享到:
评论
1 楼 scliujialong 2013-03-30  
谢谢你···第一段代码很好用,解决了我的问题。

相关推荐

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库(pdm、sql及sqlite数据库) 原文地址:http://blog.csdn.net/xz2001/article/details/8723266

    ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合项目数据库

    ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合项目用到的数据库 原文地址: http://blog.csdn.net/xz2001/article/details/8716541 注:该数据库是20130411日修改后的。

    spring mvc测试样例,使用spring4.1开发

    6. **数据绑定与验证**:Spring MVC提供了强大的数据绑定和验证功能,通过`@ModelAttribute`注解可以将请求参数绑定到方法参数上,`@Valid`可以进行数据校验。 7. **拦截器(Interceptor)**:拦截器允许在请求处理...

    ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合源码

    ExtJS4.1+ASP.NET MVC3+Spring.NET1.3+EF5+SQLite 整合源码,本人整合多日,也算来之不易,需要的可以下载。 原文地址:http://blog.csdn.net/xz2001/article/details/8716541 涉及到以下框架:ExtJS4.1、MVC3、...

    spring3.2+hibernate4.1 MVC.zip

    《Spring 3.2 + Hibernate 4.1 MVC 框架集成实战指南》 在当前的软件开发领域,Spring框架和Hibernate框架是Java企业级应用的两大支柱,它们为开发者提供了强大的功能支持。本指南将详细介绍如何在项目中集成Spring...

    springmvc 4.1

    在Spring MVC 4.1中,创建自定义拦截器需要实现`HandlerInterceptor`接口,通过`preHandle`、`postHandle`和`afterCompletion`方法来控制请求的生命周期。此外,可以通过`@Order`注解来指定拦截器的执行顺序。 3. *...

    springmvc4.1+spring4.1+mybatis3.2+spring-security3.2的maven环境搭建

    在本项目中,我们主要关注的是一个基于Spring MVC 4.1、Spring 4.1、MyBatis 3.2以及Spring Security 3.2的Maven环境的搭建过程。下面将详细介绍这些技术栈的核心概念、它们如何协同工作以及如何在实际开发环境中...

    ext4.1 mvc 模式

    EXTJS 4.1版本引入了MVC(Model-View-Controller)模式,这是一个设计模式,旨在提高软件的可维护性和可扩展性。本文将深入探讨EXTJS 4.1中的MVC模式及其在实际应用中的细节。 **MVC模式概述** MVC模式是一种软件...

    Ext4.1 dsktop MVC 动态model

    看到网上有很多问4.1的Ext desktop与它的MVC架构怎么联系起来,自己准备更新公司系统的Ext 到4.1也遇到这个问题,自己折腾了一天,看了网上很多东东,但看得不是很明白,最后只能自己专研了,悲吹!! Ext4.1 没其他...

    Extjs4.1-mvc框架完整无后端直接运行

    自己项目中完整的基于extjs4.1的mvc框架,我把它从项目中剥离出来,无后端集成,可以直接运行index.html,样式主题可以自己引用ext4.1提供的theme,该框架基于自己封装的自定义的基于ext4mvc的公共组件,需要一定的...

    spring4.1源码

    Spring 4.1是Spring框架的一个重要版本,它在前一版本的基础上进行了一系列的改进和增强,以提供更高效、更灵活的Java企业级应用开发支持。深入理解Spring 4.1的源码有助于开发者更好地掌握Spring框架的核心原理,...

    springmvc4.1+spring4.1+mybatis3.2+spring-security3.2 jar包

    Spring MVC、Spring、MyBatis 和 Spring Security 是四个在Java Web开发中广泛使用的框架,它们分别负责不同的职责,共同构建了一个强大的企业级应用框架体系。这个整合包包含了这些框架的4.1和3.2版本,是为了解决...

    Spring4.1官方jar包完整版

    3. **SpringMVC**:作为Spring的Web MVC框架,SpringMVC4.1增强了异步处理能力,支持Servlet 3.1非阻塞I/O,提升了Web应用的性能。另外,ModelAndView对象现在支持模型属性的自动绑定,以及更强大的视图解析器。 4....

    java spring4.1.x源码

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,其4.1.x版本是它的一个稳定版本,提供了丰富的功能和改进。这个压缩包包含了Spring框架的核心组件和模块的源代码,是深入理解Spring工作原理、扩展其...

    spring-webmvc jar包

    spring-webmvc-4.1.0.RELEASE.jar用于Spring框架的mvc注解

    Spring Framework Reference 4.1.x Web MVC部分 pdf

    ### Spring Framework 4.1.x Web MVC框架知识点详解 #### 一、Spring Web MVC框架概述 **Spring Web MVC**框架是Spring框架中的一个重要组成部分,它主要用于处理基于HTTP协议的请求,构建灵活且易于扩展的Web应用...

    spring springmvc 4.1 最新版jar

    Spring 和 Spring MVC 是 Java 开发领域中非常重要的两个框架,它们极大地简化了企业级应用的开发。Spring 是一个全面的后端开发框架,提供依赖注入、面向切面编程、事务管理等功能,而 Spring MVC 是 Spring 框架的...

    spring 4.1 jar包

    Spring 4.1 是一个重要的Java框架版本,它在Spring框架的发展史上占据着显著的地位。这个版本提供了许多改进和新特性,旨在提升开发效率和应用性能。以下将详细阐述Spring 4.1中的核心组件和关键知识点: 1. **...

    ExtJs 4.1 mvc 简单示例

    在这个"ExtJs 4.1 mvc 简单示例"中,我们将深入探讨如何在ExtJS 4.1中应用MVC模式来创建一个简单的应用程序。 首先,让我们来看看核心组件: 1. **index.html**:这是Web应用的入口点,通常包含HTML结构以及必要的...

    spring4.1 doc + jar包

    在4.1版本中,Spring Data有更多针对特定存储的增强,如更好的查询方法生成和定制化。 4. **Spring Expression Language (SpEL)**: SpEL是Spring框架中的表达式语言,用于在运行时查询和操作对象图。Spring 4.1增强...

Global site tag (gtag.js) - Google Analytics