码迷,mamicode.com
首页 > 其他好文 > 详细

sruts2 自定义类型转换器

时间:2016-07-14 21:37:43      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

1.1.1    Struts2中自定义类型转换器:(了解)

类型转换的过程是双向的过程:

JSP---->Action参数提交:String---Date.

Action---->JSP数据回显:Date---String.

 

自定义类型转换器:

* 1.实现TypeConverter

* convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, java.lang.reflect.Member member, java.lang.String propertyName, java.lang.Object value, java.lang.Class toType)

 

* 2.继承DefaultTypeConverter

* convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object value, java.lang.Class toType) 

 

* 3.继承StrutsTypeConverter

* convertToString(java.util.Map context, java.lang.Object o)   ---数据回显的类型转换

* convertFromString(java.util.Map context, java.lang.String[] values, java.lang.Class toClass)---提交参数类型转换

 

将Struts2中Date的类型的格式更改为yyyy/MM/dd

1.自定义一个类型转换器:

public class MyDateConverter extends DefaultTypeConverter{

 

@Override

// 重写的类型转换的方法

/**

 * 三个参数:

 * * context:Map集合.

 *  * value:转换前的类型.

 *  * toType:转换后的类型.

 */

public Object convertValue(Map context, Object value, Class toType) {

    // 类型转换是一个双向的过程:

    // 封装数据的时候需要类型转换

    // 数据回显到JSP的时候需要类型转换.

    // 根据转换后的类型去判断:

    DateFormat format = new SimpleDateFormat("yyyy/MM/dd");

    if(toType == Date.class){

        // 数据封装的类型转换 JSP---》Action  String->Date

        String[] arrs = (String[]) value;

       

        Date date = null;

        try {

            date = format.parse(arrs[0]);

        } catch (ParseException e) {

            e.printStackTrace();

        }

        return date;

    }else{

        // 数据回显的类型转换 Action---》JSP  Date->String

        Date date = (Date) value;

        String s = format.format(date);

        return s;

    }

   

}

 

}

 

2.注册类型转换器:

* 全局注册:针对所有的Action中的日期类型.

* 在src下创建一个xwork-conversion.properties

* java.util.Date=自定义类转换器的全路径.

 

* 局部注册:针对一个Action的属性.

* 1.在Action所在包下创建一个与Action类名相同-conversion.properties

* CustomerAction-conversion.properties  文件中 birthday=自定义类转换器的全路径.

***** 针对在Action中提供set方法的形式.

public class CustomerAction{

private Date birthday;

public void setBirthday(Date birthday){

This.birthday =birthday;

}

}

 

* 2.使用ModelDriven的方式接收:

* 在实体类所在包创建与类同名-conversion.properties

* Customer-conversion.properties

* birthday=自定义类转换器的全路径.

sruts2 自定义类型转换器

标签:

原文地址:http://www.cnblogs.com/jiemoxiaodi/p/5671575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!