在Java Web开发中,进行上述转换一般有以下几种:
1、在Servlet中,这一切的转换我们得自己写代码完成;
2、在Struts1.x中,我们通过apachecommons-beanutils中的converters来帮助完成这些事情;
3、在Struts2中,使用的则是基于ongl的类型转换;
……由于类型转换的通用性,因而Web框架都会实现大多数类型的转换功能,而不需要程序员编码实现。然而,对于java.util.Date这种类型的转换,各大框架似乎做得都不尽如人意。如:在Struts1.x中,该类型的转换就会有问题,很多人建议使用java.sql.Date这种类型来解决日期转换的问题(实际上可以自定义一个类型转换器来解决该问题)。在Struts2中,这个问题似乎依然存在,也许你从来没有遇到过。
在开发的过程中,也许就像你一样,我没有对日期类型的转换做任何特殊的处理,而且Struts2也很好的帮我完成了转换。然而同事测试的时候却出现了一个“莫名其妙”的问题:输入一个常用格式的日期类型yyyy-MM-dd,到后台却报错:找不到对应的set方法——setEffDate(Ljava.lang.String)。的确,程序中只有setEffDate(java.util.Date)这个方法,没有setEffDate(Ljava.lang.String)这个方法。从Ljava.lang.String可以看出,传到后台的String类型并没有转换成Date类型,因而报错。
查看struts2的源码:
在XWorkBasicConverter类中
private Object doConvertToDate(Map context, Object value, Class toType) {
。。。。。
}
发现使用 locale 来进行日期的格式化。而日期格式YYYY-MM-DD 只有在中文的语言环境才会有。
查看DateFormat中关于SHORT、MEDIUM、LONG的说明,可以知道,对于yyyy-MM-dd这种日期类型,在英语语言中是没法匹配的,由于Struts2匹配日期时,使用了Locale,可见,IE浏览器默认的语言环境是英语。一经查看,果然如此,把中文设置为默认语言环境,再测试,没问题了。
针对这个问题,我们没法要求客户一定设置中文为默认浏览器的语言环境。因而对于Date类型的转换,可以自己定义一个转换器。
因而对于Date类型的转换,可以自己定义一个转换器。
参考http://www.javaeye.com/wiki/struts2/1365-passing-parameters-in-struts2
中的一个类型转换器定义(不适合国际化的环境),如需要,你可以定义自己的转换器
可以将该转换器注册为全局的:在classpath下建立xwork-conversion.properties文件,内容为:java.util.Date=你的类型转换器的完整限定类名
分享到:
相关推荐
时间日期类型转换器是Struts2框架中的一个重要组件,它专门用于处理日期和时间格式的转换问题。 在Java中,日期和时间通常表示为`java.util.Date`或`java.time`包下的类,如`LocalDate`、`LocalTime`和`...
1. **类型转换**:Struts2中,Action类的属性与用户表单提交的数据进行绑定时,会自动尝试将请求参数转化为相应的类型,包括Date。这个过程由`ValueStack`中的`ValueStackConverter`执行。 2. **默认日期格式**:当...
自定义类型转换器允许我们更灵活地处理数据绑定过程中的类型转换问题,提高代码的可维护性和可扩展性。通过以上步骤,开发者可以有效地将前端输入的字符串转换为Date对象,满足了项目中的特定需求。同时,这也展示了...
要使用Struts的日期转换器,首先你需要在Action类中定义一个日期类型的属性,并为其添加相应的注解`@DateTimeFormat`,或者在Struts配置文件中定义一个转换器。`@DateTimeFormat`注解允许你指定日期的输入格式,这样...
在本教程中,我们将深入探讨如何在Struts2中实现自定义类型转换器。 首先,我们需要了解Struts2的类型转换过程。当用户通过表单提交数据时,Struts2会尝试将这些请求参数转换为Action类中对应属性的类型。如果默认...
在Struts2中,类型转换是处理用户输入数据的关键环节,它允许开发者将前端表单提交的数据转换为服务器端可处理的类型。在本案例中,我们将深入探讨“struts2注册转换器”,特别是如何将特定的日期格式如"20110202...
在Struts2中,如果Action类的属性是枚举类型,系统默认可能无法正确地将字符串请求参数转化为枚举实例。为了解决这个问题,我们可以创建自定义的枚举值转换器。这个转换器需要实现`org.apache.struts2.conversion....
本篇文章将深入探讨Struts2中的类型转换机制。 1. **类型转换的概念** 类型转换是指将一个数据类型的值转换为另一个数据类型的过程。在网络请求中,用户输入的数据通常是字符串类型,而服务器端的Action类属性可能...
本篇文章将深入探讨如何在Struts2中处理这些类型的错误,特别是关于时间转换的错误。 1. **类型转换错误概述** 类型转换错误通常发生在Action类中的属性与用户提交的数据类型不匹配时。例如,如果你有一个`java....
例如,如果你有一个日期字段,你可以创建一个DateConverter,将字符串格式的日期转换为java.util.Date对象。 除了自定义转换器,Struts2还提供了一系列内置的转换器,可以处理基本类型和常见的Java对象,如...
本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...
在Struts2中,类型转换是处理用户输入数据与Java对象属性之间转换的关键机制。这篇博客文章可能深入探讨了Struts2如何进行类型转换以及如何自定义转换器。 在Struts2框架中,当用户通过表单提交数据时,这些数据...
- **自定义转换器**:你可以为Date类型创建一个自定义的Converter,实现`org.apache.struts.action.Converter`接口,并在Struts配置文件中指定这个转换器用于处理Date类型的字段。 - **使用PropertyEditor**:在...
在Struts2中,日期回显是指在表单提交后,若验证失败或者用户需要重新填写信息时,框架能够将之前用户输入的日期值重新显示在表单上,提升用户体验。这篇博客文章可能详细介绍了如何在Struts2中实现这一功能。 首先...
#### 一、Struts2的类型转换类型 在Struts2框架中,类型转换是处理用户输入数据时的一个关键环节。Struts2支持多种内置的数据类型转换,同时也允许开发人员自定义类型转换规则。 **1.1 内置类型转换** Struts2提供...
以下是对Struts2中日期、时间和数字格式化的详细解释。 首先,我们来了解Struts2中的`ValueStack`。`ValueStack`是Struts2的核心组件,它管理着Action对象和视图层之间的数据传递。当我们需要在JSP页面上显示日期或...
在Struts2中,日期控件是开发者常用的功能之一,它们可以帮助用户更方便地输入和显示日期,提高用户体验。在这个压缩包中,包含了一个Struts2的日期插件,下面我们将详细探讨这个日期控件及其使用方法。 首先,我们...
在Struts 2中,类型转换器(Type Converter)扮演着至关重要的角色,它负责将HTTP请求中的字符串数据转换为应用程序所需的对象类型。当我们需要对默认类型转换器的功能进行扩展或者处理自定义类型时,就需要自定义...