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

Struts2类型转换

时间:2015-05-25 10:14:16      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:类型转换   struts2   自定义转换器   

struts开发中,对象一定要给get方法。

Struts类型转换

l  Struts2中为什么要类型转换?

     HTML表单采集数据 -->提交表单--> Action

     底层依赖HTTP传递数据,而HTTP协议中 没有 “类型” 的概念. 每一项

     表单输入只可能是一个字符串或一个字符串数组。因此在服务器端Action

      必须把 String 转换为业务需要的特定的数据类型

l  Struts2中如何传递请求参数给Action?

     Struts2框架会将表单的参数以同名的方式设置给对应Action的属性中。

     该工作主要是由Parameters拦截器做的。而该拦截器中已经自动的实现了

     String到基本数据类型之间的转换工作。类似于:Beanutils工具。
    在struts中JSP提交数据时,struts会自动转换成action中的属性的类型;对于基本数据类型以及日期类型会自动转换。日期类型只支持YYYY-MM-dd格式的自动转换,其他类型的日期格式获取到的数据为null,页面会进行跳转,但是后台会报错。对于日期类型,需要自定义类型转换器来处理。
如果类型自动转换出错,那么struts框架会 默认找名为input的result进行处理,因此开发者需要在此action的result配置红配置一个名为input的result。前提是该action继承ActionSupport。
自定义转换器分为全局转换器和局部转换器。

 

如果封装请求参数的时候出现乱码问题,那么 请查看表单的提交方式是否是postStruts2默认的编码方式是utf-8

 

Struts API转换器StrutsTypeConverter类,该类实现了TypeConverter 接口                                                                                                                      

                                                                                                                                                 

|--DefaultTypeConverter


|--StrutsTypeConverter  用户编写的转换器继承这个类即可。

                           

l  Struts2中如何自定义类型转换器?

      接口à 实现类

l  Struts2中如何配置自定义转换器?

      1、自定义转换器继承StrutsTypeConverter


      2、重写convertFromStringconvertToString方法


      3、注册转换器


            3.1 Action所在包中建立Action-conversion.properties

            3.2 3.1文件中添加以下数据需要转换的字段名=自定义转换器类的全限定名

                    birthday=cn.itcast.convertor.DateTypeConvertor

l  总结

      以上的转换器注册时候是与Action的名字相耦合的,因此只能在自己的Action中内部使用,称之为局部转换器注册方式。

 

   如何定义全局类型转换器呢?


   实现的接口和继承的类都是相同的,本质上就是配置的方式不同。

l  实现

      1、自定义转换器继承StrutsTypeConverter


      2、重写convertFromStringconvertToString方法


      3、注册转换器


            3.1 在项目src目录下建立以下固定文件

                   

            3.2 3.1文件中添加以下数据

                 

                需要转换的类类型=转换器类的全限定名


                   :  java.util.Date= cn.itcast.converter.DateConverter

l  总结

       该拦截器负责对错误信息进行拦截器<interceptorname="conversionError“


      class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>

 

     form 标签可以被映射到Action中一个属性的属性中,也可以被映射到一个集合对象中

    Struts2首先通过反射技术调用address的默认构造器创建 address对象,然后再通过反射技术调用address中与请求参数同名的属性的setter方法来获取请求参数值。

Struts2类型转换

标签:类型转换   struts2   自定义转换器   

原文地址:http://blog.csdn.net/ning_xian_hong/article/details/45954339

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