自定义好的Tapestry组件,如果没有属性提示功能(Content Assist)功能是一件很遗憾的事,开发的组件对于开发者来说用起来很爽,但对于别的开发者来说要一个个猜这些属性的功能就不爽了,如果能利用 eclipse的 Content Assist开发提示功能就能解决这个问题。
对于Tapestry核心组件要让开发工具有提示功能可以参考http://wiki.apache.org/tapestry/Tapestry5JSPEditorEclipse, 由这编文档我们可以知道,要使组件具有提示功能首要条件就得有一个组件描述文档(****.tld),Tapestry的核心组件的描述文档可以在那个地址上下载下来,但是自己定义的组件该如何处理呢?得分二种情况来处理:
项目自定义组件,这部分组件用的是与Tapestry核心组件相同的命名空间(一般都设置为“t”)。那么我们可以修改 Tapestry的核心组件的描述文档后重启eclipse就可以了。
自定义的组件库:这种组件有自己的使名空间,一般以jar包的形式独立于项目存在。那么它就需要有自己的组件的描述文档,当然,我们可以依照核心组件的描述文档来写一份自己的组件库描述文档,但是纯手工的方式维护起来不方便还容易出错,这时使用Maven插件来生成自定义的组件库的描述文档是很有必要的了。
下面,就用开的component组件库(https://git.oschina.net/rjzjh/component.git)的tld文件生成做为示例说明一下:
在component的pom文件中加入tapestry-tldgen插件,代码如下:
<plugin> <groupId>fr.exanpe</groupId> <artifactId>tapestry-tldgen</artifactId> <version>1.1.0</version> <configuration> <uri>tapestry-library:rjzjh</uri> <namespace>r</namespace> <rootPackage>cn.rjzjh.tapestry.component</rootPackage> <encoding>UTF-8</encoding> </configuration> </plugin>
参数说明:
groupId、artifactId、version 不用说了
uri:指组件库的前缀,它是在组件库的说明类(tapestry-module-classes定义的Class类)中描述的前缀,component是这样配置的:
public static void contributeComponentClassResolver( Configuration<LibraryMapping> configuration) { configuration.add(new LibraryMapping("rjzjh", "cn.rjzjh.tapestry.component")); }
所以uri就配置为 rjzjh
namespace:组件的命名空间,就是在使用此组件定时要做定义,例如,使用component的组件是这样使用的:
<html title="Not found tapestry-demo" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:r="tapestry-library:rjzjh" xmlns:p="tapestry:parameter"> <r:validatebox name="userName"></r:validatebox>
上面“xmlns:r”这个r就是命名空间
rootPackage:这个就是组件库的组件存放的包名了,这个Maven插件只对此包内的组件产生tld文件。
encoding:组件所用的编码,就是Java文件的编码。
配置完上述插件后就可以通过命令:mvn tapestry-tldgen:tld-generate 来生成组件描述文件了,顺利的情况下会在target目录下生成component-1.0.tld文件。有了tld文件我们就可以来配置eclipse使我们在开发的时候能自动提示,我开发 tml模板时用的编辑器是Amateras,可以去
http://sourceforge.jp/projects/amateras/releases/ 进行下载最新版,把它放到 eclipse的plugins目录下就好了。接下来需要做如下配置:
配置好tml文件类型的默认关联编辑器,如下图:
配置好tld文件,选择菜单 window->preferences ,在对话框的左上角搜索栏输入“tld”,选择"TLD"配置栏,点击"Add"按钮输入URI和Local Path信息,如下图:
做完这些配置后就可以让eclipse出现我们开发组件的提示功能了,先看一下组件提示功能:
再看一下属性提示功能: