使用spring的mvc,直接将页面参数绑定到对象中,对象中有属性为Date时会报错,此时需要处理下。
同样的,其他的需要处理的类型也可以用这种方法。
在controller中加入代码
@InitBinder protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { //对于需要转换为Date类型的属性,使用DateEditor进行处理 binder.registerCustomEditor(Date.class, new DateEditor()); }
DateEditor为自定义的处理类,继承自PropertyEditorSupport,处理方法为public void setAsText(String text) throws IllegalArgumentException
import org.springframework.util.StringUtils; import java.beans.PropertyEditorSupport; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateEditor extends PropertyEditorSupport { private static final DateFormat DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd"); private static final DateFormat TIMEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private DateFormat dateFormat; private boolean allowEmpty = true; public DateEditor() { } public DateEditor(DateFormat dateFormat) { this.dateFormat = dateFormat; } public DateEditor(DateFormat dateFormat, boolean allowEmpty) { this.dateFormat = dateFormat; this.allowEmpty = allowEmpty; } /** * Parse the Date from the given text, using the specified DateFormat. */ @Override public void setAsText(String text) throws IllegalArgumentException { if (this.allowEmpty && !StringUtils.hasText(text)) { // Treat empty String as null value. setValue(null); } else { try { if(this.dateFormat != null) setValue(this.dateFormat.parse(text)); else { if(text.contains(":")) setValue(TIMEFORMAT.parse(text)); else setValue(DATEFORMAT.parse(text)); } } catch (ParseException ex) { throw new IllegalArgumentException("Could not parse date: " + ex.getMessage(), ex); } } } /** * Format the Date as String, using the specified DateFormat. */ @Override public String getAsText() { Date value = (Date) getValue(); DateFormat dateFormat = this.dateFormat; if(dateFormat == null) dateFormat = TIMEFORMAT; return (value != null ? dateFormat.format(value) : ""); } }
相关推荐
Spring MVC 3.1.0通过提供数据绑定(Data Binding)和类型转换(Type Conversion)机制,简化了这个过程。 1. 数据绑定:Spring MVC的数据绑定允许我们直接将HTTP请求参数映射到控制器方法的参数上。例如,一个`@...
name=John&age=30`,那么可以在处理方法中直接声明形如`@RequestParam String name, @RequestParam int age`这样的参数,Spring MVC会自动将URL中的参数值绑定到这些参数上。 #### 清单 5. 按参数名匹配进行绑定 ...
- **与数据转换、格式化、验证框架无缝集成**:Spring MVC 3.0 可以更好地与 Spring 的数据绑定、转换和验证机制集成,提供了更加强大和灵活的数据处理能力。 - **对静态资源处理提供特殊支持**:Spring MVC 3.0 对...
Spring MVC提供了对输入数据的自动转换和输出数据的格式化功能,如String到Date的转换,数字的格式化等。 10. **Spring MVC配置** 创建Spring MVC项目时,我们需要配置Spring的XML或Java配置文件,定义...
在Spring MVC中,数据绑定是指将Request中的信息转换并绑定到处理方法的参数上。这个过程的核心是由DataBinder完成的。DataBinder会从ServletRequest中获取参数信息,然后获取处理方法的参数,并调用...
1、有如下一个订单信息页面order.jsp(置于/WEB-INF/jsp目录下),按以下步骤实现一个使用POJO类型完成表单数据传输的SpringMVC数据绑定项目。 (1) 创建一个Order类来封装上述订单信息,其中各个属性的名称和数据类型...
《Spring MVC之@RequestMapping详解》 在Java Web开发中,Spring MVC框架因其强大的功能和灵活性而备受青睐。在处理HTTP请求时,@RequestMapping注解扮演着至关重要的角色,它负责将客户端的请求映射到控制器中的...
如日期类型绑定,可以定义一个 Converter<String, Date> 接口实现类来将请求的日期数据串转成 Java 中的日期类型。 九、Spring MVC 和 Struts2 的区别 Spring MVC 和 Struts2 是两个不同的 MVC 框架,Spring MVC ...
Spring MVC 框架中, Bean 中定义了 Date、double 等类型,如果没有做任何处理的话,日期以及 double 都无法绑定。这是因为 Spring MVC 框架中的数据绑定机制是通过 PropertyEditor 来实现的,而 PropertyEditor ...
在默认情况下,Spring MVC使用`WebDataBinder`来处理数据绑定,它可以将请求参数与Java对象的字段进行匹配,并通过类型转换器(`Converter`)和格式化器(`Formatter`)将字符串值转化为对象类型。如果遇到无法直接...
### Spring MVC 类型转换 #### 一、Spring MVC 类型转换概述 在Spring MVC框架中,类型转换(Type Conversion)是一项非常重要的功能。它能够帮助开发者处理请求参数与控制器方法参数之间的类型匹配问题,简化了...
public String handleExample(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) { // 处理逻辑 } ``` 在这个例子中,`@RequestParam`自动触发类型转换,`@DateTimeFormat`指定日期...
"ssm_springmvc_canshu"这个标题暗示我们关注的是Spring MVC中关于参数绑定的问题,特别是涉及日期类型的转换。描述中提到,由于日期数据可以有多种不同的格式,Spring MVC默认的参数绑定机制无法直接将字符串参数...
总结一下,Spring MVC的核心组件包括DispatcherServlet、HandlerMapping、HandlerAdapter、Handler、ModelAndView、ViewResolver和各种参数绑定机制。通过这些组件,开发者可以方便地构建RESTful API和复杂的Web应用...
默认情况下,Spring MVC提供了一些内置的转换器,可以处理基本类型和简单对象的转换。 然后,**格式化** 主要涉及到输出数据的展示形式。Spring MVC允许我们在模型属性上使用`@DateTimeFormat`、`@NumberFormat`等...
在Spring MVC框架中,表单提交是Web应用中常见的用户交互方式。本篇文章将深入探讨一个简单的表单提交实例,帮助开发者理解如何在Spring MVC环境中处理表单数据。 首先,我们来看User模型类,它是表单数据的载体。...
但是,因为输入的 birthday 是 String 类型,而实体类中的 birthday 是 Date 类型,因此需要进行参数类型绑定。 参数绑定主要包括两步:第一步是新建一个类实现 Converter 接口,以便于将 String 类型转换成 Date ...
Spring MVC提供@ModelAttribute注解来处理表单数据,它可以把表单数据自动绑定到控制器方法的参数中。例如,如果有一个User类,可以这样绑定: ```java @PostMapping("/saveUser") public String save(@...
- 在Spring MVC中,可以通过`@PathVariable`注解将URL中的路径变量绑定到方法参数上。例如: ```java @RequestMapping("/delete/{id}") public String delete(@PathVariable("id") Integer id){ System.out....