Struts2类型转换

来源:互联网 发布:fc2破解版最新域名设置 编辑:程序博客网 时间:2024/06/07 15:12
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.1Action所在包中建立Action-conversion.properties

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

                   birthday=cn.itcast.convertor.DateTypeConvertor

l 总结

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

 

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


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

l 实现

     1、自定义转换器继承StrutsTypeConverter


     2、重写convertFromStringconvertToString方法


     3、注册转换器


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

                  

           3.23.1文件中添加以下数据

                 

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


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

l 总结

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


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

 

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

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

0 0
原创粉丝点击