`
5211422
  • 浏览: 209669 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 格式转换机制

    博客分类:
  • java
阅读更多
一、概述
    在B/S应用中,将字符串请求参数转换为相应的数据类型,是MVC框架提供的功能,而Struts2是很好的MVC框架实现者,理所当然,提供了类型转换机制。

    Struts2的类型转换是基于OGNL表达式的,只要我们把HTML输入项(表单元素和其他GET/POET的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的转换机制。

    除此之外,Struts2提供了很好的扩展性,开发者可以非常简单的开发自己的类型转换器,完成字符串和自定义复合类型之间的转换。总之,Struts2的类型转换器提供了非常强大的表现层数据处理机制,开发者可以利用Struts2的类型转换机制来完成任意的类型转换。

二、实现自定义类型转换器
    实现TypeCoverter接口,或者继承DefaultTypeConverter实现类(该类实现了TypeCoverter接口),通过继承该实现类来实现自己的类型转换器。重写convertValue方法即可。

    为了简化类型转换器的实现,Struts2提供了一个StrutsTypeConverter抽象类,这个抽象类是DefaultConverter的子类。实现了方法,并提供了2个不同转换方向的方法:Object
convertToString(Map context,String[] values,Class toClass)和String convertFromString(Map context,Object o)。

三、注册应用
    实现了自定义类型转换器之后,将该类型转换器注册在Web应用中,Struts2框架才可以正常使用该类型转换器。
关于类型转换器的注册方式,主要有3中:
A、注册局部类型转换器:仅仅对某个Action的属性起作用。
B、注册全局类型转换器:对所有Action的特定类型的属性都会生效。
C、使用JDK1.5的注释来注册类型转换器:通过注释方式来生成类型转换器。
1、局部类型转换器
    提供如下格式的文件
文件名:  ActionName-conversion.properties 
内容:多个propertyName(属性名)=类型转换器类(含包名),如  date=com.aumy.DateConverter
存放位置:和ActionName类相同路径。

2、全局类型转换器
    提供如下格式的文件
文件名:  xwork-conversion.properties
内容:   多个“复合类型=对应类型转换器”项组成,如  java.Util.Date=com.aumy.DateConverter
存放位置:WEB-INF/classes/目录下。


四、应用示例
    由于Struts2对日期转换显示时,会显示日期和时间,现在项目只需要显示日期,所以采用自定义的类型转换器来实现日期显示。


Java代码
public class DateConverter extends StrutsTypeConverter {  
 
    private static String DATE_TIME_FOMART_IE = "yyyy-MM-dd HH:mm:ss";  
 
    private static String DATE_TIME_FOMART_FF = "yy/MM/dd hh:mm:ss";  
 
    @Override 
    public Object convertFromString(Map context, String[] values, Class toClass) {  
        Date date = null;  
        String dateString = null;  
        if (values != null && values.length > 0) {  
            dateString = values[0];  
            if (dateString != null) {  
                // 匹配IE浏览器  
                SimpleDateFormat format = new SimpleDateFormat(DATE_FOMART_IE);  
                try {  
                    date = format.parse(dateString);  
                } catch (ParseException e) {  
                    date = null;  
                }  
                // 匹配Firefox浏览器  
                if (date == null) {  
                    format = new SimpleDateFormat(DATE_FOMART_FF);  
                    try {  
                        date = format.parse(dateString);  
                    } catch (ParseException e) {  
                        date = null;  
                    }  
                }  
            }  
        }  
        return date;  
    }  
 
    @Override 
    public String convertToString(Map context, Object o) {  
        // 格式化为date格式的字符串  
        Date date = (Date) o;  
        String dateTimeString=DateUtils.formatDate(date);  
    }  
 


注:DateUtils.formatDate(date);是调用该项目一个基础包的公用方法,如果单独使用,直接用日期格式化代码代替。

2、xwork-conversion.properties配置文件

Java代码
java.util.Date=com.aumy2008.converter.DateConverter 


分享到:
评论

相关推荐

    struts2类型转换机制

    struts2类型转换机制

    struts2 类型转换器

    标题中的“Struts2 类型转换器”主要指的是Struts2框架中处理请求参数到Action类属性绑定过程中的类型转换机制。在HTTP请求中,表单数据通常以字符串形式传递,而Action类的属性可能是各种类型,如整型、浮点型、...

    struts2注册转换器

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。...这个案例提供了一个很好的学习点,帮助开发者更好地理解和利用Struts2框架的类型转换机制,提高代码的健壮性和可维护性。

    STRUTS2类型转换

    总的来说,Struts2的类型转换机制为开发者提供了灵活的输入数据处理方式,既可以利用内置转换,也可以自定义转换器以适应复杂的业务场景。正确理解和使用这一机制,可以提高代码的可维护性和用户体验,确保数据的...

    struts2类型转换和国际化

    Struts2是一个流行的Java Web框架,它...总的来说,Struts2的类型转换机制确保了请求数据与Action属性之间的无缝转换,而国际化支持则使得应用能够适应全球化的用户需求。这两个特性极大地提高了开发效率和用户体验。

    struts2运行机制

    Struts2不仅继承了Struts1的优点,还引入了许多新的特性,如拦截器、动态方法调用、类型转换和数据验证等,使得开发更加灵活高效。 #### 二、Struts2运行机制解析 ##### 1. 客户端发起请求 当用户在浏览器中输入...

    struts2自定义类型转换器

    首先,理解Struts2的类型转换机制。当Struts2接收到HTTP请求时,它会尝试将请求参数与Action类的属性进行绑定。这个过程涉及到了类型转换,Struts2内置了一套转换器机制,能够自动处理基本类型和一些常见类型的转换...

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    本篇文章将深入探讨Struts2中的类型转换机制,包括常规类型转换、自定义类型转换以及错误处理。 首先,我们来看**常规类型转换**。Struts2框架内建了一套完整的类型转换器,能够自动处理常见数据类型,如String、...

    struts2 转换器

    Struts2的转换器机制就是解决这个问题的关键,它允许我们自定义数据类型的转换过程,确保数据的准确性和一致性。 Struts2框架基于MVC设计模式,其中模型(Model)层处理业务逻辑,视图(View)层负责展示,控制器...

    struts2简单实例(类型转换)

    Struts2框架提供了一种机制,即类型转换器(Type Converter),用于自动将请求参数转化为预期的数据类型。 在Struts2中,实现类型转换主要有两种方式: 1. 使用内置的类型转换器:Struts2已经内置了一些常见的类型...

    struts2类型转换

    本篇文章将深入探讨Struts2中的类型转换机制。 1. **类型转换的概念** 类型转换是指将一个数据类型的值转换为另一个数据类型的过程。在网络请求中,用户输入的数据通常是字符串类型,而服务器端的Action类属性可能...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    总之,Struts2的类型转换机制是其强大功能之一,它简化了数据绑定过程,使得开发者能够专注于业务逻辑,而不是数据转换的细节。理解并熟练掌握Struts2的类型转换,将有助于提高开发效率和代码质量。在实际项目中,应...

    Struts处理类型转换错误,如时间转换

    2. **Struts2的类型转换机制** Struts2使用OGNL(Object-Graph Navigation Language)表达式语言来映射请求参数到Action对象。它默认提供了一些内置的转换器,如`String-to-Date`,用于自动进行类型转换。但是,...

    struts2类型转换 拦截器 校验的例子

    Struts2内置了一套类型转换机制,能够自动将字符串数据转化为预设的类型。如果默认的转换器无法满足需求,开发者可以自定义转换器,通过实现`Converter`接口并注册到配置中,来实现特定类型的转换。 接下来,我们...

    struts2数据类型转换器

    总的来说,了解和掌握Struts2的数据类型转换机制对于开发高效、健壮的Java Web应用至关重要。通过自定义转换器,我们可以灵活地控制数据的转换过程,确保应用程序能正确处理用户输入,避免因为类型不匹配导致的错误...

    struts2自定义数据类型转换练习

    首先,我们需要了解Struts2的数据转换机制。当用户提交表单数据时,Struts2会通过ActionContext获取到这些数据,并尝试将其转换为Action类中相应字段的类型。如果内置的转换器无法完成转换,例如,字符串转换为...

    Struts2 自定类型转换器(三十四)

    在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...

    Struts2 ConverterType类型转换 案例源码

    首先,了解Struts2的类型转换机制。默认情况下,Struts2会根据Action类中属性的数据类型尝试进行自动转换。如果默认转换器无法处理特定类型的转换,我们可以编写自定义的Converter并将其注册到Struts2的配置中。在这...

    struts2类型转换深入总结

    总之,Struts2的类型转换机制是其强大功能的一部分,它简化了Web开发中的数据处理,同时也提供了高度的灵活性和可定制性。通过对这一机制的深入研究,开发者可以更好地控制和优化应用程序的数据处理流程,提升用户...

Global site tag (gtag.js) - Google Analytics