• Struts2 学习笔记20 类型转换part2 写自己的转换器


      之前说的是调用Struts2的默认转换器,现在我们来说以下写自己的转换器,这个一般不常用,在访问不是自己写的类中可能用到。我们一点点来,因为写自己的转换器需要注意的东西还是很多的。

      我们还是用之前的项目,新建一个Point,Point对象有xy属性没有set()方法,尽管我们可以用p.x来访问,现在我们不这样传递参数,我们传进来http://localhost:8080/Struts2_3700_type_conversion/test?p=2,3这时候我们就要用到自己的转换器了。

      我先把转换器贴出来看一看。

    MyPointConverter.java

    package com.tfj.converter;
    
    import java.awt.Point;
    
    import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
    
    public class MyPointConverter extends DefaultTypeConverter{
    
    	@Override
    	public Object convertValue(Object value, Class toType) {
    		if(toType==Point.class){
    			Point p = new Point();
    			String[] strs = (String[]) value;
    			String[] xy = strs[0].split(",");
    			p.x=Integer.parseInt(xy[0]);
    			p.y=Integer.parseInt(xy[1]);
    			return p;
    			
    		}
    		if(toType==String.class){
    			value.toString();
    		}
    		
    		
    		return super.convertValue(value, toType);
    	}
    	
    }
    


      一会儿我们再来看转化器的实现,在用自己的转换器之前还需要注册,一般呢有三种注册方式。

     1.action注册

         提供如下格式的文件 
    文件名:  ActionName-conversion.properties  
    内容:多个propertyName(属性名)=类型转换器类(含包名),如  p=com.tfj.converter.MyPointConverter 
    存放位置:和ActionName类相同路径。 

     2.全局注册

        提供如下格式的文件 
    文件名:  xwork-conversion.properties 
    内容:   多个“复合类型=对应类型转换器”项组成,如  java.awt.Point=com.tfj.converter.MyPointConverter 
    存放位置:WEB-INF/classes/目录下。 

    3.使用 JDK1.5 的注释来注册转换器。

      接下来来说下转换器的实现,其实是传进来2,3先调用split()方法把它用“,”分割,再把“2”赋值给p.x,“3”赋值给p.y就可以了。(在注册的时候.properties文件的名字是固定的)。





  • 相关阅读:
    fastadmin+thinkphp,自定义编辑操作按钮修改数据
    fastadmin列表自动刷新功能
    【Linux】centos7安装nginx并配置web前端环境。
    一文精通HashMap灵魂七问,你学还是不学
    HttpServletRequest 的三个方法 request.getParameter()、request.getInputStream()、request.getReader()
    算法19可见的山峰对数量(单调栈)
    算法18最大值减去最小值小于或等于num的子数组数量
    自控力读书笔记20220704
    爬虫课程笔记02
    Python处理办公自动化的10大场景
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3327648.html
Copyright © 2020-2023  润新知