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

Struts2 类型转换

    博客分类:
  • Web
阅读更多
一.基于ONGL中的DefaultTypeConverter


二.基于Struts2 的类型转换
在struts2支持功能强大的类型转换,它通过提供了一个StrutsTypeConverter抽象类,它是DefaultTypeConverter类的子类,用户在使用时需要实现以下两个类

convertFromString(Map context,String[] values,Class toType),它是字符串转换成复合类型,其中为了满足html中的多种请求参数形式如复合列表框,把参数values设成字符串数组形式。

converttoString(Map context,Object o),它是从复合类型转换成字符串类型的方法



实现了自定义类型转换器后,将该类型转换器注册在Web应用中,Struts2才能正常使用它。

Struts2提供了3种注册方式:

1.       注册成局部类型转换器

在与*Action.class相同位置下提供一个ActionName-conversion.properties的Properites,文件 由key-value组成,内容如下:

        propertyName=类型转换器类(需要加包前缀)

2.       注册成全局类型转换器

为了让系统中的多个Action重复使用类型转换器类,需要把类型转换器类设置成全局类型转换器:它需要在classes目录提供一个xwork-conversion.properties文件,内容由“复合类型=对应类型转换器”项组成,它们都需要提供完整的包前缀。

3.       使用JDK1.5的注释来注册

由于Struts2内建了OGNL表达式的支持,所以比较常用,简单的方式是把html的请求属性名直接设置成Action中VO的值.属性形式。

  比如一个User的Bean包括两个属性name和pass,在Action中它的变量为user变量对象,则在html表单中可以直接把请求参数名user.name和user.pass,这样struts2就会自动转换。

另外,Struts2支持数组,集合属性的类型转换器,其中在集合转换器中为了让系统了解集合中元素的类型,有两种方法:

    使用泛型来限制集合的元素的类型。
    使用了Struts2的配置文件,使用局部类型转换的配置文件来指定集合元素的数据类型,其中格式如下:

对于List类型:Element_xxx=复合类型(xxx表示属性名,以下也是)

而对于Set类型:

Element_xxx=复合类型

KeyProperty_xxx=name (其中name为set索引属性名)



类型转换中错误处理:

   Struts内置了类型转换拦截器,它负责将对应错误封装成表单域错误信息(fieldError),并将其放入ActionContext中。为了在input视图对应的页面中显示错误信息,只需要在页面中使用<s:fielderror/>标签就可输出类型转换的错误信息,其中可以通过在应用的国际化资源文件中增加代码来修改类型转换失败后的提示信息:

   Xwork.default.invald.fieldvalue={0} 字段类型转换失败!.(非西欧字符,需要用native2ascii转换)



以上改变的是全局的错误信息提示,若需要对特定字段指定特别的提示信息,可以提供Action的局部资源文件,文件名为ActionName.properties,在文件中增加一行如下项:

Invald.fieldvalue.属性名=提示信息
分享到:
评论

相关推荐

    STRUTS2类型转换

    Struts2是一个流行的Java web开发框架,其核心是Action,而类型转换是Struts2处理用户输入数据的一个重要环节。Struts2内置了多种类型转换,可以将HTTP请求中的字符串数据转换为各种基本类型和复杂类型,如日期、...

    struts2 类型转换器

    在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...

    struts2类型转换

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

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

    Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...

    struts2类型转换和国际化

    在Struts2中,类型转换和国际化是两个重要的特性,用于处理数据类型之间的转换以及多语言环境下的内容显示。 **类型转换**是Struts2处理请求参数与Action类属性之间数据类型不匹配的过程。当用户通过表单提交请求时...

    struts2类型转换深入总结

    Struts2提供了一些工具类和方法来辅助类型转换,比如`FieldError`用于记录转换失败的字段和错误信息,`ValueStack`提供了`convertValue`方法进行转换,以及`ActionContext`中的`getValueStack`方法获取当前栈顶的`...

    struts2类型转换和验证流程图

    ### Struts2类型转换与验证流程详解 #### Struts2框架概述 Struts2是一个用于构建企业级Java Web应用的强大框架。它集成了MVC设计模式,并提供了丰富的插件支持和灵活的配置选项。在Struts2中,类型转换和验证机制...

    struts2简单实例(类型转换)

    在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...

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

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括类型转换、拦截器和校验机制。本文将深入探讨这些关键知识点,并通过实际例子来帮助你理解它们的工作原理和应用。 首先,我们来看看**类型转换...

    struts2类型转换机制

    struts2类型转换机制

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    Struts2类型转换与输入校验 .zip

     熟悉和掌握Struts2自定义类型转换。  熟悉和掌握Struts2内建校验的操作方法  实验环境与设备:  已经接入局域网的网络实验室,机器上装有IE浏览器等;  strtus2.5.8  实验内容: (1) 编写一个...

    Struts2 ConverterType类型转换 案例源码

    Struts2是一个强大的MVC框架,它在处理用户请求时提供了丰富的功能,其中包括类型转换(Converter)。类型转换是Struts2框架中一个重要的特性,它允许我们把前端表单提交的数据自动转换为后端Java对象的属性。在这个...

    struts2 类型转换 数据校验

    2. **自定义转换器**:如果需要处理特殊类型或有特定转换规则,可以通过实现`org.apache.struts2.util.TypeConverter`接口创建自定义转换器,并通过`@Result`注解或者`struts.xml`配置文件进行注册。 3. **转换异常*...

    STRUTS2类型转换错误导致OGNL表达式注入漏洞分析1

    《STRUTS2类型转换错误导致OGNL表达式注入漏洞分析》 STRUTS2框架在处理用户输入时出现的类型转换错误,可能导致OGNL(Object-Graph Navigation Language)表达式注入漏洞。此漏洞允许攻击者通过精心构造的输入,...

    [原]Struts2类型转换

    在Struts2中,类型转换是一项关键功能,它允许框架将用户输入的数据自动转换为应用程序需要的特定数据类型。这篇博客文章可能是关于Struts2内部的类型转换机制及其使用的探讨。 在Struts2中,类型转换是通过`...

Global site tag (gtag.js) - Google Analytics