3.3 OGNL表达式语言
Struts 2已经实现了一些常用的类型转换器,但是这些类型转换器毕竟还是有限的。如果是开发者自己定义的数据类型,就必须自定义类型转换器来进行转换。在Struts 2中自定义类型转化器非常方便和简单。因为Struts 2的类型转换是基于OGNL来实现的,所以在介绍自定义类型转换器之前先简单介绍OGNL。
3.3.1 简单介绍OGNL以及如何下载OGNL源代码
OGNL(Object Graph Navigation Language)是一种强大的表达式语言。可以通过OGNL提供的TypeConvert接口以及实现了TypeConvert的DefaultTypeConvert类来实现自定义的类型转换器。
OGNL提供的类和接口全部包含在“ognl 2.6.11.jar”这个库文件中,这些库文件中都是已经编译好的class文件,为了能查看这些类的源代码必须先下载OGNL的源代码。以前下载的Struts 2源代码中只包含struts2-core库文件中的代码,其他的源代码必须自行下载。
(1)首先登录“http://mirrors. ibiblio.org/pub/mirrors/maven2/opensymphony/ognl/2.6.11/”站点,如图3.18所示。
图3.18 OGNL源代码下载站点
(2)单击“ognl-2.6,11-sources.jar”链接,即可下载OGNL的源文件,单击“ognl-2.6,11-javadoc. javadoc.jar”链接,即可下载OGNL的说明文档。为了更好地学习,建议同时下载源代码及说明文档。
3.3.2 在Eclipse中查看OGNL类文件
因为导入的库文件都是已经编译好的class文件,而不是源文件。必须把这些class文件和下载好的源代码进行关联,这样就能在Eclipse中查看这些库文件中的类了。
步骤如下。
(1)在Package视图中,展开referenced Libraries(导入的库文件),如图3.19所示。
(2)单击展开“ognl-2.6.11.jar”库文件,其中只有一个“ognl”包,单击展开“ognl”包,包下面即为ognl已经编译好的class文件,任意单击class文件进行打开。这时Eclipse将提示“Source not found”错误信息,如图3.20所示。
图3.19 Package视图下查看库文件
图3.20 “Source not found”提示页面
(3)单击“Attached Source”按钮,打开“Source Attachent Configuration”对话框,如图3.21所示。
(4)单击“External File”按钮,打开“JAR/ZIP File Selection”对话框。找到下载好的“ognl-2.6.11-sources.jar”,单击“打开”按钮。这时在“Source Attached Configuration”对话框的“Location path”文本框中将自动输入OGNL源代码的路径地址,然后单击“OK”按钮,完成配置。
(5)完成配置后,就可以通过Eclipse查看下载的OGNL源文件了,如图3.22所示。
以后都可以使用这种方法使库文件中的类和源文件相关联,这样就可以很方便地查看源文件了。
图3.21 “Source Attachment Configuration”对话框
图3.22 在Eclipse中查看OGNL源代码