博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2 自定义类型转换器
阅读量:5008 次
发布时间:2019-06-12

本文共 3290 字,大约阅读时间需要 10 分钟。

    需求:将客户端中一个文本框中指定的三原色转换成指定的对象封装。    

    1.定义一个封装的Color类对象

    

1 public class Color implements Serializable{ 2     /** 3      * 最终转换成的Color类对象 4      */ 5     private static final long serialVersionUID = 1L; 6     private int red; 7     private int green; 8     private int blue; 9     public int getRed() {10         return red;11     }12     public void setRed(int red) {13         this.red = red;14     }15     public int getGreen() {16         return green;17     }18     public void setGreen(int green) {19         this.green = green;20     }21     public int getBlue() {22         return blue;23     }24     public void setBlue(int blue) {25         this.blue = blue;26     }27     28     @Override29     public String toString() {30         return "Color [red=" + red + ", green=" + green + ", blue=" + blue31                 + "]";32     }33 }
Color类

 

    2.定义一个Action,用于接收数据

      注意:此处不能使用模型驱动方式,因为模型驱动需要多个属性来封装成对象。此处是一个文本框中数据转换成多个属性封装成对象

1 public class ColorAction extends ActionSupport { 2     private Color color; 3  4     public Color getColor() { 5         return color; 6     } 7      //OgnlValueStack   com.opensymphony.xwork2.interceptor.ParametersInterceptor 8     public void setColor(Color color) { 9         this.color = color;10     }11     public String colorConversion(){    12         System.out.println("++++++++++++++++++++++"+color);13         return SUCCESS;14     }
ColorAction

    3.自定义转换器。

    通过继承DefaultTypeConverter或实现TypeConverter  重写convertValue(Map<String, Object> context, Object value,Class toType)方法。

1 public class ColorConversion extends DefaultTypeConverter{ 2         /** 3          *  参数: 4          *  context:struts的上下文对象(相当于application) 5          *  value:需要被转换的数据(从客户端读取的值) 6          *  toType:需要被转化的目标类型 7          */ 8     @Override 9     public Object convertValue(Map
context, Object value,10 Class toType) {11 12 if (toType==Color.class) {13 //获取到参数14 /*15 * 相当于request.getParameterValues();返回必须是数组16 */17 System.out.println("===========================================");18 String[] colorstr=(String[])value;19 /*20 * 根据需求完成逻辑操作21 */22 //分割封装成对象23 String[] colors=colorstr[0].split(",");24 //创建color25 Color color=new Color();26 color.setRed(Integer.parseInt(colors[0]));27 color.setGreen(Integer.parseInt(colors[1]));28 color.setBlue(Integer.parseInt(colors[2]));29 System.out.println(color);30 return color;31 }32 /*33 * 若没有进行转换,默认是字符串的表现形式34 */35 return value.toString();36 } 37 }

   1. 局部类型转换器(配置文件在执行的Action所在包中)

    文件名必须是:该Action类的名字加上“-”加上“conversion.properties”  如:这里就是ColorAction-conversion.properties

    配置文件中添加键值对:  Action中的需要转换的对象名,值为  自定义的转换器的完全限定名

                color=com.bzk.web.utils.ColorConversion

    搞定!配置完毕后,当启动服务器时候会自动加载配置文件,当实例化Action时候会自动的调用我们配置的类型转换器

   2.全局类型转换器(只需要将配置的properties文件放到src目录下)

    文件名改为:xwork-conversion.properties  

    此时文件的配置文件中的键值都必须是完全限定名

    如:此处  com.bzk.model.pojo.Color=com.bzk.web.utils.ColorConversion

 

    

    

转载于:https://www.cnblogs.com/bingzhikun/p/4833688.html

你可能感兴趣的文章
asp.net上传功能(单文件,多文件,自定义生成缩略图,水印)
查看>>
bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
查看>>
云计算设计模式(八)——外部配置存储模式
查看>>
C++ Primer 有感(复制控制)
查看>>
[转]深入理解闭包(一)
查看>>
经典SQL语句大全(绝对的经典)
查看>>
设计者使用最多的前20专门设计LOGO的免费字体
查看>>
TCP三次握手、四次握手
查看>>
认识System,System32,Syswow64
查看>>
Jmeter如何把CSV文件的路径设置成一个变量,且变量的值是一个相对路径
查看>>
免费的自动构建CI
查看>>
iOS10 app连接不上网络的问题
查看>>
结对开发之电梯调度最终稿(徐梦迪&刘博)
查看>>
simple java mail
查看>>
信息建模
查看>>
二进制中1的个数
查看>>
Android ListView 滚动时背景变黑色
查看>>
《机器学习》第一章 引言 笔记加总结
查看>>
每天一点点之vue框架开发 - 引入bootstrap
查看>>
【刷题】洛谷 P3806【模板】点分治1
查看>>