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

struts(类型转换器)

时间:2015-01-17 19:24:20      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

1. Struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,Struts2可以使用内建的类型转换器实现自动的转换;但对于自定义的类型转换来说,

    就需要我们自己指定类型转器的方式。

2. 类型转换器必须继承DefaultTypeConverter,一般继承它的子类StrutsTypeConverter。action中调用set和get方法时,调用类型转换方法。

3. 自定义类型转换器的实现步骤:

    1). 继承StrutsTypeConverter

    2). 覆盖convertFromString和convertToString

         范例:

         public class UtilDateConverter extends StrutsTypeConverter {

                        private static final String PATTERN = "yyyy/MM/dd";

                        //浏览器提交到服务器是调用,将字符串转换成对象

                        @Override

                         public Object convertFromString(Map context, String[] values, Class toClass) {

                                        //values为要转换属性的数组,可能有多个名字相同,所以取第一个。

                                       String dateString = values[0];

                                       SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);

                                       Date date = null;

                                       try {

                                               //字符串,转换成日期类型。

                                               date = sdf.parse(dateString);

                                         } catch (ParseException e) {

                                                 e.printStackTrace();

                                        }

                                        return date;

                         }


                       //服务器向浏览器输出时调用,将某种类型转换成字符串。o是要转换成字符串的对象。

                      @Override

                       public String convertToString(Map context, Object o) {

                                  Date date = (Date)o;

                                  return new SimpleDateFormat("yyyy年MM月dd日").format(date);

                       }

          }
        3).注册类型转换器

            a).局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件:

                MyActionName-conversion.properties,MyActionName指需要使用转换器的Action名称”-conversion.properties“固定字符串,不能修改。

                我们AddUserAction类型转换器的配置文件名称为:AddUserAction-conversion.properties,该配置文件必须和Action放到同一个目录中,该配

                置文件的格式为:Action中的属性名称=转换器的完整路径,如:birthday=com.bjpowernode.struts2.UtilDateConverter 也可以转换数组,

                同样需要有set和get方法。

           b).全局类型转换器,全局类型转换器可以对所有的Action起作用(同Struts1的类型转换器),需要提供如下配置文件:

               xwork-conversion.properties(该名字固定),该配置文件需要放到src下,该配置文件的格式:需要转换的类型完整路径=转换器的完整路径,

               如:java.util.Date=com.bjpowernode.struts2.UtilDateConverter自定义类型也可以转换。

            补:请求页面:

                   出生日期:<input type="text" name="birthday"><br>

                   显示页面:<s:property value="birthday"/> 或 <s:text name="date"></s:text>

4. 如果全局类型转换器和局部类型转换器同时存在,局部优先。

5. 采用struts2标签读取属性get方法时可以调用转换器的convertToString。采用JSTL不会调用,显示的是默认格式的时间。

6. 类型转换时,若发生异常,fieldError中会自动把异常加上,英文的。

7. 使用类型转换器须要在Action中提供属性的set和get方法

struts(类型转换器)

标签:

原文地址:http://www.cnblogs.com/Jtianlin/p/4230769.html

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