【Struts2】:Struts2的类型转换

来源:互联网 发布:betternet mac 下载 编辑:程序博客网 时间:2024/04/25 13:46
       所有的MVC框架,都需要负责解析HTTP请求参数,并将请求参数传递给控制器组件。此时,问题出现了:HTTP请求参数都是字符串类型的,但Java语言又是强类型的,因此MVC框架必须将这些字符串参数转换成相应的数据类型——这个工作是所有的MVC框架都应该提供的功能。

        表现层数据的流向以及所需的类型转换如下图所示:


        Struts2提供了非常强大的类型转换机制,Struts2的类型转换可以基于OGNL表达式,只要我们把HTTP参数(表单元素和其他get/post的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的类型转换机制。
        除此之外,Struts2提供了很好的扩展性,开发者可以非常简单地开发出自己的类型转换器,完成字符串和自定义复合类型之间的转换(例如,完成字符串到Person实例的转换),如果类型转换中出现未知异常,类型转换器开发者无须关心异常处理的逻辑,Struts2的conversionError拦截器会自动处理该异常,并且在页面上生成提示信息。总之,Struts2的类型转换器提供了非常强大的表现层数据处理机制,开发者可以利用Struts2的类型转换机制来完成任意的类型转换。
Struts2內建的类型转换器
        对于大部分的常用类型,开发人员根本不用去管类型转换,Struts2可以完成大多数常用的类型转换。这些常用的类型转换时通过Struts2內建的类型转换器完成的,Struts2已经內建了字符串类型和如下类型之间的相互转换的转换器。
boolean和Boolean:完成字符串和布尔值之间的转换。
char和Character:完成字符串和字符之间的转换。
int和Integer:完成字符串和整型值之间的类型转换。
long和Long:完成字符串和长整型值之间的类型转换。
float和Float:完成字符串和单精度浮点值之间的转换。
double和Double:完成字符串和双精度浮点值之间的转换。
Date:完成字符串和日期类型之间的转换,日期格式使用用户请求所在Locale的short格式。
数组:在默认情况下,数组元素是字符串,如果用户提供了自定义类型转换器,也可以是其他复合类型的数组。
集合:在默认情况下,假定集合元素类型为String,并创建一个新的ArrayList封装所有的字符串。
        因为Struts2提供了上面这些类型转换器,如果需要把HTTP请求参数转换成上面的这些类型,则根本不用开发者进行任何的特殊处理。这也是所谓的框架的好处所在,将很多的基础服务为开发人员封装好,我们直接使用即可,大大的的提高了开发效率,也为开发人员及减轻了工作量。
0 0