文档章节

如何自定义类型转换器 ?

jj_soft
 jj_soft
发布于 2016/06/04 15:24
字数 608
阅读 8
收藏 0

问题4. 如何自定义类型转换器 ?
1). 为什么需要自定义的类型转换器 ? 因为 Struts 不能自动完成 字符串 到 引用类型 的 转换.
      在java中,基本类型有int,double,float,boolean,char,引用类型就是对象类型,例如数组吖,对象吖,这些

2). 如何定义类型转换器:
StrutsTypeConverter 类--->继承OGNL.defaultTypeConverter---》继承OGNL.TypeConverter

I. 开发类型转换器的类: 所以咋们一般扩展StrutsTypeConverter 类就足够了

 1 package com.atguigu.struts2.Converter;
 2 
 3 import java.sql.Date;
 4 import java.text.DateFormat;
 5 import java.text.ParseException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Map;
 8 
 9 import org.apache.struts2.util.StrutsTypeConverter;
10 
11 public class TestTypeConverter extends StrutsTypeConverter {
12     
13     /*
14      * 此方法是用来将传进来的字符串数组变成一个Object对象
15      * 
16      * 
17      */
18     DateFormat dateFormat=new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
19     public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
20         if(arg2==Date.class){
21             if(arg1!=null&&arg1.length>0){
22                 String string=arg1[0];
23                 try {
24                     dateFormat.parseObject(string);
25                 } catch (ParseException e) {
26                     // TODO Auto-generated catch block
27                     e.printStackTrace();
28                 }
29             }
30         }
31 
32         return arg1;
33     }
34     
35     /*
36      *
37      * 此方法是用来回显的时候调用的,将Object对象转换成字符串
38      * 
39      */
40 
41     public String convertToString(Map arg0, Object arg1) {
42         //判断是否为Date对象
43         if(arg1 instanceof Date){
44             //是的话,就使用format()方法将Date对象转换成一个字符串
45             return dateFormat.format(arg1);
46         }
47         return null;
48     }
49 
50 }

 

II. 配置类型转换器:
有两种方式
①. 基于字段的配置:
> 在字段所在的 Model(可能是 Action, 可能是一个 JavaBean) 的包下, 新建一个 ModelClassName-conversion.properties 文件

> 在该文件中输入键值对: fieldName=类型转换器的全类名. 

fieldName=类型转换器的全类名
例如下面的:
birth=com.atguigu.struts2.Converter.TestTypeConverter

> 第一次使用该转换器时创建实例.
> 类型转换器是单实例的!



②. 基于类型的配置:
> 在 src 下新建 xwork-conversion.properties

> 键入: 待转换的类型=类型转换器的全类名.

需要转换的类型=转换器全类名
例如下面的:
java.util.Date=com.atguigu.struts2.Converter.TestTypeConverter

> 在当前 Struts2 应用被加载时创建实例.所以若在转换器里有引用Web.xml里的参数时就要注意了,因为 转换器在Struts2在加载时就已经创建实例了,而此时web.xml还没加载呢,所以你在转换器里引用web.xml的资源就为空了,所以一定要做是否非空做出判断,要不要转换器还是起不了作用

-->

© 著作权归作者所有

jj_soft
粉丝 1
博文 96
码字总数 74097
作品 0
广州
程序员
私信 提问
SpringMVC把从Jsp页面传递过来的日期字符串转换成Java日期类型方法

这里介绍两种SpringMVC把从Jsp页面传递过来的日期字符串转换成Java日期类型方法。 方法一: 方法二: 绑定日期类型转换器: 方法三: 自定义类型转换器。 关于如何自定义类型转换器,参见该篇...

帅得拖网速
2016/07/17
873
1
Struts2(接受表单参数)请求数据自动封装和数据类型转换

Struts2请求数据自动封装:   (1)实现原理:参数拦截器   (2)方式1:jsp表单数据填充到action中的属性;    普通的成员变量,必须给set,get可以不给的。     注意点,Action中定...

别叫小伙
2017/02/21
0
0
5:spring mvc 数据类型转换

SpringMVC如何实现数据类型转换 1、类型转换:首先表单数据(全部是字符串)通过WebDataBinder进行绑定到命令对象,内部通过Converter SPI实现; 2、数据验证:使用JSR-303验证框架进行验证;...

小杰java
2017/10/18
51
0
Java程序员从笨鸟到菜鸟之(四十四)细谈struts2(七)数据类型转换详解

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 Web应用程序的交互都是建立在HTTP之上的,互相传递的都是字符串。也就是说服务器接收到的来自用户的数据只能...

长平狐
2012/11/12
79
0
Java Server Faces (JSF) 页面转换与验证(一)

由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统、详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还...

码上中国博客
2015/02/03
517
0

没有更多内容

加载失败,请刷新页面

加载更多

python学习10.04:Python list列表使用技巧及注意事项

前面章节介绍了很多关于 list 列表的操作函数,细心的读者可能会发现,有很多操作函数的功能非常相似。例如,增加元素功能的函数有 append() 和 extend(),删除元素功能的有 clear()、 remo...

太空堡垒185
18分钟前
3
0
新手插画学习的方法?教你如何自学?

插画学习的方法?教你如何自学? 从小喜欢画一些漫画头像随笔画,但是其实没有基础。个人偏好小清新手绘风的插画(如下图),每每看到都希望自己能画出这样的作品。 我其实很想说画这种美术功...

huihuajiaocheng
23分钟前
4
0
面试题

1、实现clone();

gtandsn
34分钟前
4
0
CentOS 7 部署 tesseract-ocr

官方地址 github yum-config-manager --add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_7/ 若提示 yum-config-manager: command not found 执行以......

阿白
35分钟前
3
0
JAVA比较器中comparator的使用

一个专用的比较器Comparator Comparator是一个专用的比较器,当一个不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式...

daxiongdi
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部