Struts2的类型转换机制

                                                          Struts2的类型转换机制

在基于HITP 协胆的Web 应用中,客户端〈浏览器〉和服务器之间传输的都是字符串形式的数据,换句话说,服务器接收到的用户数据只能是字符串或字符数组, 但在服务器端的Java 程序中, 数据是有各种类型的,如整型( int ) 、浮点型(float ) 、日期类型( java . u ti l. Date) 等,以及各种自定义的数据类型, 因此, 在接收到客户端传来的字符串数据后, 我们还需要将这些数据转换为正确的类型

 

Struts2对类型转换的支持

Struts2 类型转换机制的基础是 OGNL 表达式

1.项目的整体架构

如何自定义我们自已的类型转换器

 

 1 package cn.hmy.converter;
 2 
 3 import java.text.DateFormat;
 4 import java.text.ParseException;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Date;
 7 import java.util.Map;
 8 
 9 import org.apache.struts2.util.StrutsTypeConverter;
10 
11 import com.opensymphony.xwork2.conversion.TypeConversionException;
12 
13 public class DataConverter extends StrutsTypeConverter{
14     //支持转换的多种日期格式,可增加时间格式
15     private final DateFormat[] dfs={
16             new SimpleDateFormat("yyyy年MM月dd日"),
17             new SimpleDateFormat("yyyy-MM-dd"),
18             new SimpleDateFormat("MM/dd/yy"),
19             new SimpleDateFormat("yyyy.MM.dd"),
20             new SimpleDateFormat("yyMMdd"),
21             new SimpleDateFormat("yyyy/MM/dd")
22     };
23     /**
24      * 将字符串类型的变量转换成我们的目标类型
25      * */
26     @Override
27     public Object convertFromString(Map context, String[] values, Class toTypewh) {
28     
29          String datestr=values[0];//获取日期的字符串
30         for (int i = 0; i < dfs.length; i++) {
31             try {
32                 return dfs[i].parse(datestr);
33             } catch (Exception e) {
34                 continue;
35             }
36         }
37             throw new TypeConversionException();
38     }
39 
40     /**
41      * 转换为字符串类型    一般用于前台取值
42      * **/
43     @Override
44     public String convertToString(Map context, Object obj) {
45         System.out.println(obj);
46         
47         System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(obj));
48         return new SimpleDateFormat("yyyy-MM-dd").format(obj);
49     }
50 
51 }

 

 

 

特定类的类型转换器

 

 

 

 

 

 

 

 

 

 

 

 

+3

 

 

 

 

 

 

 

 

 

 

全局范围的类型转换器

 

posted @ 2016-10-15 13:43  回青  阅读(136)  评论(0编辑  收藏  举报