在html表单中的文本框里输入的不管是数值类型还是字符类型,最后都是以String类传到后台。如果后台bean的属性是int、double等,Struts2就会自动把字符类型转换成相应的类型。但是对于复杂类型如日期类型,那么Struts2不会自动进行类型转换,这时就需要我们自己动手编写一个Converter类进行类型转换。
Struts中有两种类型转换器,分别是局部类型转换器和全局类型转换器
1.局部类型转换器:
要编写一个类型转换器:首先需要编写一个转换类实现TypeCoverter接口,或者继承DefaultTypeConverter实现类(该类实现了TypeCoverter接口),下面我们对日期类型转换编写一个DateTypeConverter类,代码如下:
package com.struts.converter; import java.util.Date; import java.text.SimpleDateFormat; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class DateTypeConverter extends DefaultTypeConverter { public Object convertValue(Map<String, Object> context, Object value, Class toType) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); try { if(toType == Date.class) { //字符串型转换为日期型 String[] params = (String[]) value; //request.getParameterValues(); return dateFormat.parse(params[0]); } else if(toType == String.class) { //日期型转换为字符串型 Date date = (Date) value; return dateFormat.format(date); } } catch (Exception e) { e.printStackTrace(); } return null; } }
然后我们需要对类型转换器进行注册,编写一个properties文件
名称格式为:actionName-conversion.properties,actionName为你需要类型转换的那个action的类名,后面为固定格式
内容格式为:转换属性=转换处理类,如:birthday=com.struts.converter.DateTypeConverter,注意转换处理类需要带上包名,最后把该文件放在与之相对应action类的同一个包下
2.全局类型转换器:
局部类型转换器只能对同一个包下的action类起作用,要想对所有的日期类型进行转换,则需要使用全局类型转换器,这里全局所需的类与局部类型相同
名称格式为:xwork-conversion.properties,这是固定格式
内容格式为:bean类=转换处理类,如:java.util.Date=com.struts.converter.DateTypeConverter,最后把该文件放在src根目录下即可
最后附上转换器的处理流程:
(1)输入:HTML表单提交—Action类处理—执行属性setter方法—如果需要类型转换—找到properties文件—按照properties设置找到对应的转换类,调用转换器-把返回值通过setter方法给action中属性赋值。
(2)输出:Action类处理—执行属性getter方法—如果需要类型转换—找到properties文件—按照properties设置找到对应的转换类,调用转换器-把返回值通过getter方法输出到页面。
相关推荐
这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...
在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...
2. **配置转换器**:为了让Struts2知道何时使用自定义的转换器,我们需要在配置文件(通常是struts.xml)中进行声明。可以使用`<conversion-property>`标签来指定转换器应用于哪个字段,或者全局注册转换器。 ```...
首先,了解Struts2中的类型转换器。Struts2框架提供了内置的转换器,可以处理基本类型和某些复杂类型的转换。然而,对于自定义格式或特殊需求,我们需要自定义转换器。转换器的实现基于`Converter`接口,该接口包含...
本文主要介绍Struts1和Struts2中的自定义类型转换器,并探讨其实现机制。 #### 二、Struts1中的自定义类型转换器 在Struts1中,自定义类型转换器主要是通过继承`com.sun.org.apache.commons.beanutils.Converter`...
在本教程中,我们将深入探讨如何在Struts2中实现自定义类型转换器。 首先,我们需要了解Struts2的类型转换过程。当用户通过表单提交数据时,Struts2会尝试将这些请求参数转换为Action类中对应属性的类型。如果默认...
这个压缩包“struts2 全局类型转换器.rar”可能包含了一个示例或教程,教你如何在Struts2中实现全局类型转换器,以统一处理不同类型的字段转换。在Struts2中,类型转换器扮演着重要的角色,它允许你将用户输入的数据...
在Struts2中,类型转换主要由`Converter`接口实现,它的主要职责是将HTTP请求参数转换为Action类的属性。当我们在Action类中定义一个属性,而这个属性的类型与请求参数的类型不匹配时,Struts2就会自动进行类型转换...
文件名“struts2-converter”可能包含的是一个示例项目,用于演示如何在Struts2中创建和使用转换器。在这个项目中,可能会有以下部分: 1. 自定义的Converter类实现:这将是一个实现了Converter接口的类,包含了...
类型转换器是Struts2框架中的一个重要组件,用于在Action类的属性与HTTP请求参数之间进行数据类型的转换。本授课教案和例子源码将深入探讨这一主题,帮助你更好地理解和应用Struts2的类型转换器。 在第一课时中,...
在Struts 2中,类型转换器(Type Converter)扮演着至关重要的角色,它负责将HTTP请求中的字符串数据转换为应用程序所需的对象类型。当我们需要对默认类型转换器的功能进行扩展或者处理自定义类型时,就需要自定义...
本案例"Struts2之类型转换器的使用案例struts002"深入探讨了如何自定义类型转换器以及在实际应用中的使用。 首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String...
在Struts2中,用户通过表单提交的数据通常是字符串,而服务器端处理时往往需要将其转化为其他类型,如整型、浮点型或日期等。Struts2内置了一套类型转换机制,能够自动将字符串数据转化为预设的类型。如果默认的转换...
在Struts2中,类型转换器(TypeConverter)扮演着关键角色,它负责将HTTP请求参数转换为Action类中相应属性的正确数据类型。本教程主要探讨Struts2.1源代码中的自定义类型转换器。 1. **类型转换器的作用** 类型...
在Struts2中,实现类型转换主要有两种方式: 1. 使用内置的类型转换器:Struts2已经内置了一些常见的类型转换器,如String到Integer、Date等。当Struts2发现需要的转换器时,会自动查找并使用。 2. 自定义类型转换器...
在这个案例中,我们将深入探讨Struts2中的ConverterType,以及如何实现一个自定义的类型转换器来处理坐标(x,y)的数据。 首先,了解Struts2的类型转换机制。默认情况下,Struts2会根据Action类中属性的数据类型...
类型转换在Struts2中主要通过实现ognl.TypeConverter接口来完成。当需要自定义转换器时,你需要创建一个类并实现这个接口,提供convertFromString和convertToString两个方法,分别处理字符串到目标类型的转换和目标...
要使用Struts的日期转换器,首先你需要在Action类中定义一个日期类型的属性,并为其添加相应的注解`@DateTimeFormat`,或者在Struts配置文件中定义一个转换器。`@DateTimeFormat`注解允许你指定日期的输入格式,这样...