struts有一套完整的类型转换机制。但在实际应用中我们有时也需要定义自己的类型转换器。下面说一下如何实现自定义类型转换器
一、局部的类型转换
首先要有一个目标类型。可以是自定义的类型如Point也可以j2se中已有的类型如:Date
举例
public class Point{
private int x;
private int y;
//.......
}
当用户在客户端输入类似"3,4"的字符串时。由类型转换器自动转开型为x=3,y=4的Point对象
第二步,要一个类型转换器
要写一个继承ognl.DefaultTypeConverter的类比如
public class PointConverter extends DefaultTypeConverter{
//一定要重写这个方法
@Override
public void convertValue(Map context,Object value,Class toType){
//由客户端字符中向point转换
if(toType==Point.class){
Point point = new Point();
String str = (String)value;
String[] values = strs.split(",");//将输入的值分割为数组
int x = Integer.parseInt(values[0]);
int y = Integer.parseInt(values[1]);
point.setX(x);
point.setY(y);
return point;
}
//由服务端向客户端输出成字符串
if(toType==String.class){
Point point = (Point)value;
int x = point.getX();
int y = point.getY();
String str = "x="+x+",y="+y;
return str;
}
return null;
}
}
第三步:需作类型转换的类型必须为一个action的属性。比如:
public class PointAction{
private Point point;//jsp中应有一个<s:textfield name="point"/>来接收客户输入
//........
}
第四步,配置属性文件,让struts调用类型转换器进行工作:
PointAction-convertion.properties:
引用
point=com.mypack.PointConverter
注意,这个properties文件一定要与PointAction.java在同一目录下。且文件名的前半部分与action同名,后面都是固定写法。
当完成以上步骤后,整个类型转换的工作就完成了。测一下吧。。
二、全局的类型转换
上面其实是一个局部的类型转换。下面讲讲全局的。
首先要在classpath(IDE中就是src目录下)建一个固定名为xwrok-conversion.properties.例如:
com.mypackage.Point = com.mypack.PointConverter
这里要讲全局与局部的区别:
1、配置文件名:全局的只有一个叫xwork-conversion.proterties 局部的则由action名+“-conversion.proterties”组成
2、配置文件路径:全局的在类路径的根下。局部的与action路径一至
3、配置文件数量:全局只有一个。局部的根据action的多少,可能多个
4、全局配置中key为完整的类型名,如com.mypack.Point.局部的则是action中的属性名
三、利用struts框架快速开发类型转换器
上面的局部类型转换器是继承ognl.DefaultTypeConverter.其实struts对些作了封装,提供了一个更方便的抽象类org.apache.struts2.util.StrutsTypeConverter
我们的类型转换器只要继承StrutsTypeConverter并实现它提供的抽象方法即可。
分享到:
相关推荐
### Struts自定义类型转换器 #### 一、概述 在Web开发中,表单提交的数据通常是字符串形式的,而在业务逻辑处理时往往需要将这些数据转换为其他类型的对象(如日期、数字等)。Struts框架为了更好地处理这种类型...
### Struts2自定义类型转换:深入解析与实践 #### 引言 在Web开发中,数据类型转换是一项常见的需求,特别是在用户输入的数据与后端处理的数据类型不一致时。Struts2框架提供了强大的类型转换机制,允许开发者...
自定义类型转换器是Struts 2的核心特性之一,允许开发者根据业务需求定制数据转换规则。以下将详细介绍如何创建、注册以及使用自定义类型转换器。 1. **创建自定义类型转换器** - 创建一个类,实现`org.apache....
然而,对于如Date这样的复杂类型,需要自定义转换器来处理。 创建自定义类型转换器的步骤如下: 1. **定义转换器类**:继承`org.apache.struts2.util.FieldConverter`或`...
接着,当Struts2接收到相关参数时,会自动调用自定义转换器进行转换。 6. **调试与测试** 调试自定义类型转换器通常涉及到设置断点,观察转换过程中的变量状态,以及通过单元测试确保转换逻辑的正确性。在IDE如...
理解并掌握如何利用内置转换器、自定义转换器以及处理转换错误,对于构建高效、稳定的Struts2应用至关重要。通过深入学习Struts2的源码和使用相关工具,我们可以更深入地了解这些机制,并优化我们的应用程序。
本实例练习旨在帮助你深入理解Struts2的工作原理,特别是自定义类型转换和拦截器的使用。 首先,让我们详细探讨Struts2的MVC架构。在MVC模式中,Model代表业务逻辑,View负责展示数据,而Controller则是两者之间的...
Struts2作为一款流行的Java Web框架,其在处理用户输入数据时扮演着重要角色。...在练习中,你可以尝试创建不同的自定义转换器,并理解它们在处理不同类型数据时的作用,从而加深对Struts2数据处理机制的理解。
Struts2框架提供了一种灵活的方式来实现这种类型的转换——即通过自定义类型转换器(Type Converters)。本文档将详细介绍如何在Java中自定义类型转换器,并通过一个具体的例子来演示其使用方法。 #### 二、局部...
标签中的“源码”可能意味着博客会深入到Struts2框架的源代码中,解释类型转换器的工作原理和如何根据源代码实现自定义转换器。而“工具”可能指的是使用Struts2提供的工具类或API来辅助类型转换。 在`Struts2_3500...
总的来说,Struts2的类型转换机制为开发者提供了灵活的输入数据处理方式,既可以利用内置转换,也可以自定义转换器以适应复杂的业务场景。正确理解和使用这一机制,可以提高代码的可维护性和用户体验,确保数据的...
Struts2是一个强大的MVC框架,它在处理用户请求时涉及到数据类型的转换,这在处理复杂的表单数据或者自定义对象时尤其重要。本篇文章将详细介绍如何在Struts2中进行配置与自定义类型转换。 首先,Struts2的配置主要...
Struts2是一个流行的Java web开发...总之,Struts2的类型转换机制为开发者提供了强大的灵活性和便利性,不仅可以处理基本类型,还能方便地扩展以支持自定义类型和复杂数据结构的转换,从而简化了Web应用的开发工作。
然而,对于更复杂的数据类型,或者需要特殊转换规则的情况,我们就需要创建自定义转换器。 创建自定义转换器的步骤如下: 1. **创建转换器类**:首先,你需要创建一个新的Java类,实现Converter接口。在这个类中,...
熟悉和掌握Struts2自定义类型转换。 熟悉和掌握Struts2内建校验的操作方法 实验环境与设备: 已经接入局域网的网络实验室,机器上装有IE浏览器等; strtus2.5.8 实验内容: (1) 编写一个...
总之,Struts2的类型转换机制提高了开发效率,通过自定义转换器,我们可以灵活地处理各种数据类型,确保用户输入能够正确地转换为应用程序可处理的形式。`MyTypeConverter`这个文件可能就是你为特定需求创建的一个...
自定义转换器使得Struts框架更加灵活,能够处理复杂或特殊的数据类型,提高了代码的可维护性和用户体验。通过编写自定义转换器,开发者可以确保数据转换过程符合业务规则,减少因类型不匹配导致的错误。在实际开发中...
在自定义转换器类上使用`@ConversionProperties`注解,可以指定需要转换的属性及其配置。例如,我们可以设置属性的默认值,或者指定特定的转换规则。 4. **注册转换器** 转换器需要在Struts2框架中注册才能生效。...