Struts2实现类型转换器(十五)下

简介: Struts2实现类型转换器(十五)

三. StrutsTypeConverter 实现类型转换


三.一 StrutsTypeConverter 类定义


public abstract class StrutsTypeConverter
  extends DefaultTypeConverter{
    //有两个抽像的方法,需要重写
    //转换成对象
    public abstract Object convertFromString(Map paramMap, String[] paramArrayOfString, Class paramClass);
    //转换成字符串
  public abstract String convertToString(Map paramMap, Object paramObject);
  }


我们用 坐标转换这个功能 吧。


三.二 坐标转换功能展示 StrutsTypeConverter 类型转换


三.二.一 自定义 Point 类


package com.yjl.pojo;
/**
@Date: 2019年3月27日
@author: 两个蝴蝶飞
@Description:Struts类型转换器的自定义类
*/
public class Point {
  /**
   * @param x 经坐标
   * @param y 纬坐标
   */
  private float x;
  private float y;
  public float getX() {
    return x;
  }
  public void setX(float x) {
    this.x = x;
  }
  public float getY() {
    return y;
  }
  public void setY(float y) {
    this.y = y;
  }
  @Override
  public String toString() {
    return "Point [x=" + x + ", y=" + y + "]";
  }
}


三.二.二 编写控制器 MyAction2


package com.yjl.web.action;
import com.opensymphony.xwork2.ActionSupport;
import com.yjl.pojo.Point;
/**
@Date: 2019年3月25日
@author: yuejl
@Description:自定义类型转换
*/
public class MyAction2 extends ActionSupport{
  private static final long serialVersionUID = 1L;
  private Point point;
  @Override
  public String execute() throws Exception {
    System.out.println("输出点:"+point.toString()); //这个是对象
    return SUCCESS;
  }
  public Point getPoint() {
    return point;
  }
  public void setPoint(Point point) {
    this.point = point;
  }
}


三.二.三 配置struts.xml


<action name="MyAction2" class="com.yjl.action.MyAction2">
      <result>/WEB-INF/content/show2.jsp</result>
</action>


三.二.四 编写类型转换器 PointTypeConverter


package com.yjl.conversion;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import com.yjl.pojo.Point;
/**
@Date: 2019年3月27日
@author: yuejl
@Description:Point类型转换
*/
public class PointTypeConversion extends StrutsTypeConverter{
  /**
   * 字符串转换成相应的对象类型
   */
  @Override
  public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
    System.out.println("值是:"+arg1[0]);
    String [] values=arg1[0].split(",");
    Point p=new Point();
    p.setX(Float.parseFloat(values[0]));
    p.setY(Float.parseFloat(values[1]));
    return p;
  }
  /**
   * 由对象转换成相应的字符串
   */
  @Override
  public String convertToString(Map arg0, Object arg1) {
    Point point=(Point) arg1;
    return "[经坐标:"+point.getX()+",纬坐标:"+point.getY()+"]";
  }
}


三.二.五 编写类型转换文件


MyAction2-conversion.properties 文件


##Action属性=全限定名称
point=com.yjl.conversion.PointTypeConversion


三.二.六 编写前端页面


三.二.六.一 编写 /content/mypoint.jsp


<s:form action="MyAction2" method="post" namespace="/">
    点:<input type="text" name="point">
    <s:submit value="提交" />
</s:form>


输入的格式用 , 进行分隔 。


三.二.六.二 编写/content/show2.jsp


<body>
<s:property value="point"/>
</body>


三.二.七 验证


输入网址: http://localhost:8080/Struts_Converter/mypoint


输入郑州坐标: 113.62,34.75


20200419112024616.png


点击确定按钮:


控制台打印输出:


20200419112029598.png


前端页面显示:


20200419112034211.png


通过 StrutsTypeConverter 方式,也实现了类型转换的效果。


四. 全局类型转换


上面的方式 ,都是局部类型转换, 而自定义的类型,一般是在整个项目中通用的,故常常使用的是 全局类型转换。 JDK自带的类,一般用局部类型转换,重新设计。


全局类型转换,与局部类型转换差不多,只是 局部的,写得是ActionName,


而全局的,必须是 xwork-conversion.properites 文件名。


另外,局部的是: Action属性名=要转换的类型转换器的全限定名称,


而全局的是: 自定义的类全限定名称=要转换的类型转换器的全限定名称


需要放置在 src 目录下。


配置 Point 类的全局类型转换:


放置在 src目录下, 文件名称为: xwork-conversion.properties


内容为:


##自定义的类全限定名称=要转换的类型转换器的全限定名称 
## 对Point 类进行转换
com.yjl.pojo.Point=com.yjl.conversion.PointTypeConversion


提示: 当对一个自定义类型,既使用局部类型转换器,又使用全局类型转换时,会报错。


本章节的代码链接为:


链接:https://pan.baidu.com/s/1vp9oE2FZCLfFM-JueaSM7g 
提取码:3ftv


谢谢您的观看!!!

相关文章
|
7月前
|
安全 Java 编译器
【Java开发指南 | 第四篇】Java常量、自动类型转换、修饰符
【Java开发指南 | 第四篇】Java常量、自动类型转换、修饰符
56 4
|
7月前
|
存储 安全 Java
【Java开发指南 | 第三篇】Java 空行、强制类型转换及基本数据类型
【Java开发指南 | 第三篇】Java 空行、强制类型转换及基本数据类型
57 6
|
3月前
|
Java 编译器 程序员
Java自动类型转换的妙用
Java中的自动类型转换(隐式类型转换)是指编译器在无需显式指定的情况下自动将一种数据类型转换为另一种类型。这一特性简化了代码,提高了可读性,并在多态中发挥了重要作用。例如,在数学运算时,较小类型会自动转换为较大类型以避免精度损失;在面向对象编程中,子类对象可以自动转换为父类引用,增强了代码的灵活性和兼容性。此外,它还使得数组和集合的使用更加方便,整体上让编程更加优雅和高效。
89 25
|
Java
Java基本语法(7)--赋值运算符及其扩展
Java基本语法(7)--赋值运算符及其扩展
58 0
|
Java
Java面向对象(12)--对象类型转换 (Casting )
Java面向对象(12)--对象类型转换 (Casting )
150 0
Java面向对象(12)--对象类型转换 (Casting )
|
Java 数据安全/隐私保护
Java修饰符和运算符,超详细整理,适合新手入门
Java修饰符和运算符,超详细整理,适合新手入门
129 0
|
前端开发 API
Struts2实现类型转换器(十五)上
Struts2实现类型转换器(十五)
250 0
Struts2实现类型转换器(十五)上
|
前端开发 Java 应用服务中间件
Struts2配置异常错误处理(十六)上
Struts2配置异常错误处理(十六)
382 0
Struts2配置异常错误处理(十六)上
Struts2配置异常错误处理(十六)下
Struts2配置异常错误处理(十六)
236 0
Struts2配置异常错误处理(十六)下