struts2之类型转换器的使用(明白原理,不用掌握)

来源:互联网 发布:linux搜狗输入法设置 编辑:程序博客网 时间:2024/06/05 22:48

以下内容,如有不妥,欢迎纠错

struts2之类型转换器的使用


类型转换器用到的不多,一般用在日期的转换上.


package converter;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;/** * 需求: * 把表单的MM/dd/yyyy格式的数据转换成日期类型 * 把数据库中的本地日期格式,转换成MM/dd/yyyy形式输出 *  *自定义类型转换器 *第一步:编写一个类,继承自StrutsTypeConverter,实现convertFromString,convertToString方法. *  * @author John * */public class MyConverter extends StrutsTypeConverter {//定义一个类型转换器private DateFormat format = new SimpleDateFormat("MM/dd/yyyy");/** * 把字符串数组中的数据转换成日期类型 *  * 方法参数详解: * Map context:是OGNL的上下文对象 * String[] values:要转换的数据类型 * Class toClass:目标类型  */public Object convertFromString(Map context, String[] values, Class toClass) {//1.先看有没有数据if(values == null || values.length == 0){return null;}//2.取出数组中的第一个元素String date = values[0];//3.判断目标类型的字节码是不是日期类型if(toClass == java.util.Date.class){//4.使用DateFormat进行转换,并且返回转换后的结果try {return format.parse(date);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}}return null;}/** * 把日期类型的数据转换成字符串 *  * 方法参数详解: * Object o:要转换的数据 */public String convertToString(Map context, Object o) {//1.判断object是不是日期类型if(o instanceof Date){Date date = (Date)o;//2.是日期类型,使用转换器转成指定格式的字符串,并返回return format.format(date);}return null;}}

然后配置类型转换器

1.局部类型转换器:只能指定javabean中的属性用

按照属性来注册.在属性所属的javabean的包下,建立一个. properties文件.文件名称是javabean名称-conversion.properties

例如:User-conversion.properties

局部类型转换器声明方式是以使用的属性名称作为key,以类型转换器的全类名作为values


2.全局类型转换器(推荐)

在类路径的根路径下创建一个固定名称文件:xwork-conversion.properties

全局类型转换器的声明方式是以使用的数据类型(全类名)作为key,以类型转换器的全类名作为values

例如; java.util.Date = com.web.converter.MyTypeConverter