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

继承struts2中StrutsTypeConverter实现类型转换

阅读更多

1. 创建含有需要类型转化对象的JSP页面(input.jsp,里面表单里含有自定义类)
<body>
  <h3><font color="red">使用逗号将点的两个坐标分隔开</font></h3>
 <s:form action="Register">
   
<s:textfield name="point" label="point"/>
  <s:textfield name="age" label="age"/>
  <s:textfield name="username" label="username"/>
  <s:textfield name="date" label="birthday"/>
   
<s:submit label="submit"></s:submit>
 </s:form>
    </body>
2. 创建信息输出JSP页面(out.jsp)
<html>
   <head>
      <title>My JSP 'output.jsp' starting page</title>
   </head>
   <body>
  point:<s:property value="point"/><br>
  age:<s:property value="age"/><br>
  username:<s:property value="username"/><br>
  date:<s:property value="date"/><br>
    </body>
</html>
3. 创建上面JSP页面中需要类型转换的对象所对应的类(Point.java)
public class Point
{
 private int x;
 private int y;
 //getter、setter方法
}
4. 创建form提交接受的Action(RegisterAction.java)
public class RegisterAction extends ActionSupport
{
 private Point point;
 private int age;
 private String username;
 private Date data;
//getter、setter方法
 
 @Override
 public String execute() throws Exception
 {
  return SUCCESS;
 }
}
5. Struts.xml中配置RegisterAction
<action name="Register" class="com.test.action.RegisterAction">
<result name="success">/output.jsp</result>
</action>
6. 创建能转换Point的类(PointConvert.java)

注意:与ognl方式的转换不同之处
public class PointConverter extends StrutsTypeConverter
{
 @SuppressWarnings("unchecked")
 @Override
 public Object convertFromString(Map content, String[] value, Class toType)
 {
  Point point = new Point();
  String paramValues[] = value[0].split(",");
  
  int x = Integer.parseInt(paramValues[0]);
  int y = Integer.parseInt(paramValues[1]);
  point.setX(x);
  point.setY(y);
  
  return point;
 }
 @SuppressWarnings("unchecked")
 @Override
 public String convertToString(Map content, Object toType)
 {
  Point point = (Point) toType;
  
  int x = point.getX();
  int y = point.getY();
  
  String result = "[x=" + x + ",y=" + y + "]";
  return result;
 }
}

引入参数中的toType表示的是目标类型(是字符串类型还是Point类型),
当客户端string提交到pointConvert这个action时候(即:toType==Point.class),value指的是textfield中填写的字符串。
对if(Point.class==toType)过程解释:
(1) String[] str=(String[])value;-----------------将value显示转化为字符数组后赋值为数组str[];
(2)String[] paramValues=str[0].split(",");-------取出str[]的第一个元素,即:str[0],当textfield里填写的是“20,40”,str[0]里的内容也就是一个字符串“20,30”,然后通过str[0].split(“,”)将字符串“20,30”以逗号为界限拆分成一个数组并赋值给paramValues[],这时paramValues[]里内容是{“20”,”30”};
(3) int x=Integer.parseInt (paramValues [0]);-----将字符串类型的“20”转换为integer型赋值给x;
7. 配置属性文件使得让Point属性由PointConvert处理:
⑴ 在和要被convert的类的同目录下新建一个文件:
RegisterAction -conversion.properites。
RegisterAction --------要转换的属性所在的类的类名
-conversion.properies-----固定格式
⑵填写属性文件内容:
point=com.test.converter.PointConvert
point--------具体要转换哪一个属性
com.test.converter.PointConverter-----具体用那个convert类来转换point
注意:如果对多个属性进行转换可以添加多个如point=com.test.converter.PointConvert
形式的内容。

8. 定义全局类型转换
上面所演示的是局部类型转换方式,假如有四个action,分别为PointAction1、PointAction2、PointAction2、PointAction4,每个PointAction里面都有一个相同的point属性需要转换,所以必须在com.test.action包下面创建四个属性文件指定每个PointAction都需要ActionConvert类进行转换,即:
PointAction1-coversion.properties,PointAction2-coversion.properties, PointAction3-coversion.properties,PointAction4-coversion.properties
如果更多类需要转换,显然这种方式比较累人,这种情况可以考虑使用全局类型转换。
配置步骤:
(1)  在src目录下创建全局属性文件,文件名为:
xwork-conversion.properties 文件名是固定不变的。
(2) 全局属性文件内容:
com.test.bean.Point=com.test.converter.PointConverter
等号左边是要转换的类所在的包名,右边是具体用那个convert类来转换point。

分享到:
评论

相关推荐

    struts2简单实例(类型转换方法对比)

    全局类型转换是通过实现`Converter`接口或者继承`StrutsTypeConverter`类,并在`struts.xml`配置文件中注册该转换器实现的。这种方式可以应用于所有Action中的相同类型属性。全局类型转换器的优点在于,一旦定义,...

    STRUTS2类型转换

    创建自定义类型转换器时,可以继承Struts2提供的StrutsTypeConverter类,它提供了一些便利的方法来简化转换逻辑。例如,你可以重写convertFromString和convertToString方法,根据业务需求处理字符串到目标类型和目标...

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

    在本教程中,我们将深入探讨如何在Struts2中实现自定义类型转换器。 首先,我们需要了解Struts2的类型转换过程。当用户通过表单提交数据时,Struts2会尝试将这些请求参数转换为Action类中对应属性的类型。如果默认...

    struts2 类型转换器

    开发者可以实现`org.apache.struts2.util.TypeConverter`接口或继承`org.apache.struts2.util.StrutsTypeConverter`抽象类来创建自己的类型转换器。然后,通过在Action类或者全局配置文件(struts.xml)中注册这个...

    Struts2自定义类型转换

    Struts2提供了两种实现自定义类型转换器的途径: 1. **继承`ognl.DefaultTypeConverter`**:这是原始的类型转换器接口,提供基础的类型转换功能。 2. **继承`org.apache.struts2.util.StrutsTypeConverter`**:这是...

    Struts自定义类型转换器

    在Struts2中,自定义类型转换器则需要继承`org.apache.struts2.util.StrutsTypeConverter`类。具体的实现步骤如下: 1. **创建转换器类**: ```java package com.example.converter; import java.text....

    struts2数据类型转换

    在Struts2中,数据类型转换的意义主要体现在以下几个方面: 1. **确保数据一致性**:通过类型转换,可以确保服务器接收到的数据与业务逻辑层中对象的属性类型保持一致,避免因类型不匹配导致的运行时错误。 2. **...

    struts2类型转换

    在Struts2中,类型转换是一项关键功能,它允许框架将用户输入的数据自动转换为应用程序所需的类型。这使得开发人员可以更加专注于业务逻辑,而不用过于担心数据类型匹配的问题。 类型转换在Struts2中的主要作用是...

    Struts2的自动类型转换及自定义类型转换[文].pdf

    类型转换在Struts2中扮演着关键角色,因为它使得开发者无需手动处理字符串到其他类型的数据转换。Struts2内置了一系列常见的类型转换器,可以处理基本类型如String、boolean、char、int、long、float、double以及...

    [原]Struts2类型转换

    在Struts2中,类型转换是通过`StrutsTypeConverter`类实现的,这个类是Struts2框架提供的一种机制,使得开发者能够自定义输入数据到Java对象的转换规则。当用户通过表单提交数据时,Struts2会尝试将这些数据自动转换...

    struts2如何配置与自定义类型转换

    本篇文章将详细介绍如何在Struts2中进行配置与自定义类型转换。 首先,Struts2的配置主要涉及到`web.xml`和`struts.xml`两个文件。在`web.xml`中,你需要添加一个Struts2的Filter,这个Filter负责拦截所有的HTTP...

    Java实训教程 Java软件开发实战 Java开发框架介绍 struts2_10_转换器 共22页.pptx

    在Struts2中,可以通过两种方式配置类型转换器: 1. **全局配置**: - 在`xwork-conversion.properties`文件中配置全局的类型转换器。这个文件通常位于项目的`WEB-INF/classes`目录下。 ```properties # xwork-...

    深入学习struts2

    在传统的MVC框架中,这种转换通常需要手动进行,但在Struts2中,这一过程被自动化了。 Struts2内建了一套类型转换机制,可以自动将字符串转换为以下基本类型:boolean、char、int、long、float、double、Date以及...

    Struts2例子6

    在Struts2中,创建自定义转换器非常简单,需要实现`org.apache.struts2.util.Converter`接口或者继承`org.apache.struts2.util.StrutsTypeConverter`抽象类。这个转换器类需要覆盖`convert`方法,根据需求进行数据...

    struts2学习笔记

    在实际应用中,常常会继承Struts2提供的StrutsTypeConverter类,覆盖convertFromString和convertToString方法,以便更灵活地进行字符串到对象以及对象到字符串的转换。 三、Struts2输入校验 Struts2提供了两种主要...

    一篇文章搞定Struts2的类型转换

    Struts2还提供了一个名为`StrutsTypeConverter`的类,它继承自`DefaultTypeConverter`,简化了自定义类型转换器的实现。我们可以直接继承`StrutsTypeConverter`而不是`DefaultTypeConverter`,这样可以利用Struts2的...

    Struts的自定义转换器

    1. **创建转换器类**:首先,我们需要创建一个新的类,如`LineConvertor`,并让它继承`org.apache.struts2.util.StrutsTypeConverter`。这个基类提供了一些默认的行为,我们可以覆盖其方法以实现自定义转换。 2. **...

    struts2.2学习笔记

    Struts2提供了一种简化类型转换编码的方式,即通过继承`StrutsTypeConverter`,覆盖`convertFromString()`和`convertToString()`两个抽象方法。这两个方法分别负责将页面输入的字符串转换为后台对象,以及将后台对象...

    自定义struts时间转换器

    1. 创建转换器类:继承`org.apache.struts2.util.StrutsTypeConverter`类,并重写其`convertFromString`和`convertToBean`方法。这两个方法分别用于将字符串转换为日期对象,以及将日期对象转换为字符串。 ```java ...

    Struts2.0两个小时教学PPT

    自定义类型转换器是继承自`StrutsTypeConverter`抽象类的类,需要重写`convertFromString`和`convertToString`两个方法,分别负责字符串到目标类型的转换和目标类型到字符串的转换。注册自定义类型转换器可以通过两...

Global site tag (gtag.js) - Google Analytics