[ Struts2 ] 数据类型转换

1. 为什么需要数据类型转换?

          所有的MVC框架都是表现层的解决方案。而表现层主要用来和用户进行交互,负责收集用户的输入和展示服务器的数据

    状态。这样数据就有两个流动方向,从服务器流出和进入服务器,而网络传输是以字符的形式进行的。前者不存在数据类

    型转换的问题,因为所有的Java数据类型都可以很好的转换成字符串;而后者就存在这个问题,需要将字符串形式的请求

    参数转换成各种各样的Java类型。这个功能应该由MVC框架提供。

 

2. struts2的数据类型转换

        struts2的数据类型转换是建立在OGNL基础之上的。struts2框架提供了内置的数据类型转换器,可以完成字符串和一些

    简单数据类型,数组和集合类型之间的数据类型转换。struts2也提供了一个拦截器负责处理类型转换时的错误。

 

3. 如果没有MVC框架提供的数据类型转换,如何手工完成

          强制类型转换

 

4. struts2的数据类型转换器实现

         struts2的类型转换器都要实现OGNL的TypeConverter接口里的convertValue方法,但是该法较为复杂,所以OGNL

    提供了也它的默认实现类DefaultTypeConvertor。struts2提供了更友好,更直观的实现类StrutsTypeConvertor。

         DefaultTypeConvertor

               public Object convertValue(Map context, Object value, Class toType)

               toType  通过它可以判断类型转换的方向

               value  带转换的值,随toType的不同而不同

         StrutsTypeConvertor

               public Object convertFromString(Map arg0, String[] arg1, Class arg2)

               public String convertToString(Map arg0, Object arg1)

 

5. struts2的类型转换器的注册

         局部类型转换器  只对某个Action的某个属性起作用

         全局类型转换器  多所有的Action特定类型的属性起作用

    局部类型转换器:

         命名方式:ActionName-conversion.properties

         和ActionName指定的Action放在一起

         内容: 属性名=类型转换器的全限定类名

    全局类型转换器:

         命名方式是固定的:xwork-conversion.properties

         和struts.xml放在一起

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

 

6. 使用OGNL实现struts2的类型转换器

         <s:textfield name="user.name" label="UserName"/>

 

7. 使用数组或者集合类型封装请求参数时的类型转换的实现

 

 

8. 如果集合类型不使用泛型,struts2怎样处理数据类型转换

 

9. struts2的内置类型转换器

 

10 .类型转换时的异常处理

     由conversionError拦截器拦截,将错误信息封装成fielderror,并且放在ActionContext中,转向input逻辑视图。

 需要输出错误信息使用<s:fielderror/>.

 

11. 表现层数据处理的两个方面:数据校验和类型转换以及二者之间的关系

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值