struts2示例代码-自定义局部类型转换器和自定义全局类型转换器

局部把String类型的birthday变量转换成Date类型

新建一个class,在Superclass中点击Browse,在文本框里输入DefaultTypeConverter,最好选择com.opensymphony.xwork2.conversion.impl这一项,

新建好class后,右键Source里选择Override/Implement Methods选择convertValue(Map,Object,Member,String,Object,Class)

package cn.type.converter; //转换器的方法类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class DateTypeConverter extends DefaultTypeConverter {
    public Object convertValue(Map context, Object value, Class toType) {
        // TODO Auto-generated method stub
        System.out.println("已经进入类型转换器");
        SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMdd");
        try{
            if(toType==(Date.class)){ //字符串向Date转换时
                String[] paramss= (String[]) value;
                return dateFormat.parse(paramss[0]); //以数组形式转换变量,当变量为一个时         
            }
            else if(toType==(String.class)){ //Date向字符串转换时
                Date date=(Date) value;
                return dateFormat.format(date);
            }
        }
        catch(ParseException e){}
        return null;
    }

}


package cn.action; //传参的方法
import java.util.Date;
public class HelloWordAction {
    private Date birthday;
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public String execute() throws Exception{
        return "success";
    }
}

局部转换器要在要转换的变量类的同一个文件夹下新建File文件,命名为变量所在类的名字-conversion.properties

文件内容birthday=cn.type.converter.DateTypeConverter//birthday是要转换的变量名称,右边是重写的方法的全名,语句后不要加任何标点符号


全局转换器

只需要把HelloWordAction-conversion.properties改名为xwork-conversion.properties

并把这个文件放在所有类的根目录下,比如说src下

文件内容java.util.Date=cn.type.converter.DateTypeConverter

你可能感兴趣的:(类,struts2,表单)