Struts2整理-----Struts2类型转换

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

局部类型转换

提供如下格式的文件 

文件名:ActionName-conversion.properties  

内容:多个propertyName(属性名)=类型转换器类(含包名),如  date=com.aumy.DateConverter 

存放位置:和ActionName类相同路径。 

开发步骤(这里以Action中Date类型数据为例):

step1.

首先编写一个转换类Converter1Action.java(继承DefaultTypeConverter),然后覆盖convertValue这个方法。

package com.aaron.converter;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class DateTypeConverter extends DefaultTypeConverter {

    @Override
    public Object convertValue(Map arg0, Object value, Class toType) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        try {
            if (toType == Date.class) {// 当字符串向Date类型转换时
                String[] params = (String[]) value;// Request.getParameterValues()
                return dateFormat.parse(params[0]);
            } else if (toType == String.class) {// 当Date转换成字符串时
                Date date = (Date) value;
                return dateFormat.format(date);
            }
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

}

convertValue方法用于String类型数据转成自定义类型的处理方法

参数: arg0---与Action有关的上下文信息

      value  ---从请求中获取的参数值

      toType ---要转换的目标类型

step2.

编写action

package com.aaron.action;

import java.util.Date;

import com.aaron.model.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Converter1Action extends ActionSupport {

    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        System.out.println("birthday=="+birthday);
        this.birthday = birthday;
    }

    public String excute() {
        ActionContext.getContext().getSession().put("birthday", birthday);
        return SUCCESS;
    }
}

step3. 

在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法

如:Converter1Action-conversion.properties

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

birthday=com.aaron.converter.DateTypeConverter

全局类型转换

提供如下格式的文件 

文件名:xwork-conversion.properties 

内容:多个“复合类型=对应类型转换器”项组成,如  java.Util.Date=com.aaron.conveterDateTypeConverter

存放位置:src根目录下。 

开发步骤:                   

如果业务需求所有的日期都要转换,则可以使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,并且properties文件中的内容为: 待转换的类型=类型转换器的全类名

java.util.Date=com.aaron.conveterDateTypeConverter
原文地址:https://www.cnblogs.com/haaron/p/5121852.html