Struts2 自定义类型转换器

1.为什么需要转换器:

在页面表单数据都是以字符串的形式传入到后台的,Struts2 内置的一些基本的类型转换器,而大多时候,根据需求,需要自己定义一些类型转换器来处理数据。

2.编写转换器类并继承 StrutsTypeConverter:

以日期转换器为例:将前台日期字符串转化为 Date() 类型的对象:


    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Map;
    import org.apache.struts2.util.StrutsTypeConverter;

    //自定义转换器
    public class DateConverters extends StrutsTypeConverter{

        private DateFormat dateFormat;
        {
            dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        }
        @Override
        public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
            if(arg2 == Date.class) {
                try {
                    return dateFormat.parse(arg1[0]);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }

        @Override
        public String convertToString(Map arg0, Object arg1) {
            if(arg1 instanceof Date) {
                return dateFormat.format((Date)arg1);
            }
            return null;
        }

    }

页面向后台传数据执行convertFromString()

后台向前台传数据执行convertToString()

3.加载自定义的转换器:

在局部范围内注册一个类型转换器:

  局部注册一个类型转换器实际上只能对某个Action的属性生效。首先我们需要创建一个局部类型转换文件,该文件的命名规则如下:


    ActionName-conversion.properties
    //ActionName:使用该转换器的 action 名字

文件内容:需要转换的类 = 转换器的全类名


    java.util.Date=cn.edu.pzhu.converters.DateConverters

在全局范围内注册一个类型转换器:

  注册全局类型转换器需要提供一个类型转换文件,文件名为:


    xwork-conversion.properties

全局的类型转换器应用的任意一个Action中,只要存在指定的属性,都会调用该转换器实现转换。

猜你喜欢

转载自blog.csdn.net/PZHU_CG_CSDN/article/details/79994507