zoukankan      html  css  js  c++  java
  • Struts2之自定义局部类型转换器、全局类型转换器

    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器

    (1)局部类型转换器 
    如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用。

    以下为局部类型转换器的开发步骤
    a.首先要写一个类来继承DefaultTypeConverter
    b.然后覆盖convertValue这个方法,在里面进行数据转型 
    c.在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法, 
    如:HelloWorldAction-conversion.properties

    d.Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)

    如:birthday=com.ljq.type.converter.DateTypeConverter


    public class DateTypeConverter extends DefaultTypeConverter {
    
    	@Override
    	public Object convertValue(Map<String, Object> context, Object value, Class toType) {
    		SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd");
    		try {
    			if(toType==Date.class){
    				String[] params=(String[])value;
    				return format.parse(params[0]);
    			}else if(toType==String.class){
    				Date date=(Date)value;
    				return format.format(date);
    			}
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    }
    HelloEntity-conversion.properties:
    birthday=com.type.date.DateTypeConverter


    (1)全局类型转换器

    全局类型转换器只需要将局部类型转换器的名称改为 xwork-conversion.properties,并将其文件放在src目录下,将其配置内容更改为:

    java.util.Date=com.type.date.DateTypeConverter
    即可实现全局类型的转换;

    注:全局类型的转换要注意,必须整个项目中所有的特定类型都是相同的传输格式才能够使用全局类型转换。

  • 相关阅读:
    关于 OpenSmtp 邮件标题过长后出现乱码问题的解决
    用于解析 sohu 新闻页面的 XSLT 文件
    CEGUI 0.7x实现下划线描边图文混排等效果
    Hash算法说明
    D3DXMatrixShadow 函数
    DLL动态链接库和LIB静态链接库之程序员经验分析
    printf格式控制符的完整格式(转载)
    深入说明HDR技术
    Irrlicht不定期分析
    8.3实例程序:平面阴影
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114769.html
Copyright © 2011-2022 走看看