问题:
在使用Spring的SimpleFormController的formBackingObject方法绑定待编辑表单内容时,对于BigDecimal类型的数据Spring绑定会报错,原因是表单域中的String类型数据无法转换为Bean中的BigDecimal
解决办法:
自定义一个特定类型的绑定类,在Controller中的initBinder方法中注册特定类型绑定方法,Spring在碰到此类型的数据时就会使用其转换数据类型
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
CustomBigDecimalEditor bigDecimalEditor = new CustomBigDecimalEditor();
binder.registerCustomEditor(BigDecimal.class, bigDecimalEditor);
super.initBinder(request, binder);
}
/**
* 类说明: BigDecimal custom property editor<br>
* 创建时间: 2008-2-26 下午03:15:03<br>
*
* @author Seraph<br>
* @email: seraph@gmail.com<br>
*/
public class CustomBigDecimalEditor extends PropertyEditorSupport {
public void setAsText(String text) throws IllegalArgumentException {
if (StringUtils.isEmpty(text)) {
// Treat empty String as null value.
setValue(null);
} else {
setValue(NumberUtils.getBigDecimal(text));
}
}
}
/**
* 类说明: Number handle utils<br>
* 创建时间: 2007-10-4 下午05:08:48<br>
*
* @author Seraph<br>
* @email: seraph@gmail.com<br>
*/
public class NumberUtils {
public static int parseInt(long l){
return BigDecimal.valueOf(l).intValue();
}
public static long parseLong(String s) {
return Long.parseLong(s.trim());
}
public static BigDecimal getBigDecimal(String s) {
return BigDecimal.valueOf(Long.parseLong(s.trim()));
}
}
分享到:
相关推荐
在SpringMVC中,数据绑定和数据类型转换是两个关键的概念,它们对于构建高效、健壮的Web应用至关重要。 **数据绑定**是SpringMVC中的一种机制,允许我们将用户通过表单或其他方式提交的请求参数自动绑定到控制器中...
SpringMVC没有提供默认的对日期类型的绑定,需要自定义日期类型的绑定。可以通过两种方式实现自定义参数绑定:使用WebDataBinder和使用WebBindingInitializer。 使用WebDataBinder可以在Controller类中定义...
总结,SpringMVC的数据绑定简化了Web应用中数据的传递和处理,提高了开发效率。理解并熟练掌握这一特性,对于提升Java Web开发者的工作效能至关重要。在实际操作中,我们需要灵活运用数据绑定、验证、转换等机制,...
在SpringMVC框架中,拦截器(Interceptor)是一种强大的机制,它可以用来在请求处理之前、之后或处理过程中执行额外的逻辑。自定义拦截器允许开发者根据业务需求进行更精细的控制,例如权限验证、日志记录、性能统计...
SpringMVC参数绑定是指将用户请求的参数绑定到控制器的方法参数中。例如,使用@PathVariable注解绑定URL中的参数,使用@RequestParam注解绑定请求参数。 五、SSM整合 SSM整合是指将SpringMVC、MyBatis和Spring框架...
在Spring MVC中,参数绑定是一项核心功能,它允许我们将HTTP请求中的数据自动映射到控制器方法的参数上,极大地简化了开发过程。本文将深入探讨Spring MVC的各种参数绑定方式及其源码实现。 1. **路径变量绑定**: ...
但是,默认情况下,SpringMVC只能转换基本数据类型,如String转换成Integer、Double等。如果需要将字符串转换成自定义的实体类,SpringMVC并没有提供默认的功能。这时,我们需要自定义类型转换器,以实现字符串到...
在“扩展SpringMVC以支持更精准的数据绑定1”这个主题中,博主探讨了如何通过自定义转换器和验证器来增强Spring MVC的数据绑定能力,以满足更为复杂的应用场景。 首先,我们要了解Spring MVC的数据绑定基础。在默认...
本项目“Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源”正是针对这一需求提供的一种解决方案。下面将详细介绍这个项目中的关键技术点和实现原理。 首先,Spring框架是Java企业级应用开发的核心...
在这个“SpringMVC数据绑定入门”压缩包中,你将找到一系列资源来帮助你理解并掌握SpringMVC的数据绑定机制,这对于任何Java开发者来说都是一个重要的技能。 1. **SpringMVC概述**: SpringMVC作为Spring框架的一...
Spring 提供了一系列的默认 `PropertyEditor`,例如 `CharsetEditor`、`ClassEditor` 等,覆盖了常见的数据类型,如 `Charset`、`Class`、`Currency` 等。 当我们需要自定义数据转换时,可以通过注册 `...
在企业级应用开发中,数据源管理是至关重要的部分,特别是在大型系统中,往往需要连接多个不同的数据库以满足业务需求。本项目“Spring+SpringMVC+Mybatis动态链接多数据源”旨在实现一个灵活、可扩展的数据源切换...
在Spring MVC框架中,数据绑定是一项核心功能,它允许开发者将HTTP请求参数与Java对象的属性进行映射,简化了Web应用中数据处理的过程。本示例程序是基于Maven构建的一个项目,旨在演示如何在Spring MVC中实现数据...
Formatter)**:如果需要处理的数据类型SpringMVC不支持,可以创建自定义的转换器或格式化器,实现Converter或Formatter接口,将它们注册到SpringMVC上下文中,以处理特定类型的参数绑定。 - **自定义消息转换器...
最后,我们需要将自定义的类型转换器配置到SpringMVC框架中,以便SpringMVC框架能够使用我们自定义的类型转换器。我们可以通过在mvc:annotation-driven元素中添加conversion-service属性来实现这一点。 ```xml ```...
在Spring MVC框架中,我们通常处理HTTP请求时,会遇到绑定表单数据或者查询参数到Java对象的情况。然而,随着RESTful API的广泛使用,JSON格式的数据交换也变得越来越常见。扩展Spring MVC以支持绑定JSON格式的请求...
通过这个自定义类型转换器的实现,我们可以灵活地处理任何复杂的数据类型,如JSON字符串、XML数据或其他自定义格式,使其与Spring MVC中的模型对象相匹配。这极大地增强了Spring MVC应用程序的可扩展性和灵活性。 ...
然而,有时我们需要根据项目需求定制这种映射方式,例如处理自定义的数据类型或者有特殊格式的请求参数。 首先,我们可以通过实现`HandlerMethodArgumentResolver`接口来自定义参数解析器。这个接口有两个核心方法...
在本文中,我们将深入探讨SpringMVC框架中的数据绑定,这是Spring MVC开发中不可或缺的一部分,尤其是在处理用户输入和展示响应时。数据绑定是将HTTP请求参数与Java对象的属性关联的过程,极大地简化了Web应用程序的...