刚刚部署完我的第一个Click实例,极其简单的类HelloWorld实例,却折腾了我一上午。赶紧写下这个历程。
首先要赞叹一下Click框架的文档(不是功能),这是我见过的官方文档、API最丰富最详细的一个框架了。才出来的东西,文档却做到这么好,在开源的世界里真难得。
我遇到的陷阱很简单:根据文档的QuickStart,我的home.htm总是找不到,总是显示默认的not-found.htm页面。先从头到尾找了遍官方文档,没提到这问题;再谷歌一下,这下新框架的弊病出来了,没人用就没人写心得……我在click的配置文件中打开了debug模式,发现我的home.htm没找到我添加的Table映射:
[Click] [debug] automapped pages:
[Click] [debug] /home.htm ->CLASS NOT FOUND
[Click] [debug] /click/error.htm -> CLASS NOT FOUND
[Click] [debug] /click/not-found.htm -> CLASS NOT FOUND
[Click] [debug] /home.htm ->CLASS NOT FOUND
[Click] [debug] /click/error.htm -> CLASS NOT FOUND
[Click] [debug] /click/not-found.htm -> CLASS NOT FOUND
怎么会呢?除了类的命名,我完全按照文档来的啊,并在我的home.htm页面中加入了$labsInfo(Table类型的映射)。怎么就找不到呢。结果试了好久发现问题就出在类的命名上!!!经过实验,发现要使用Click的映射功能,必须保证类名和htm页面名配套。比如在home页面上用到的映射变量,必须出现在指定包的home类或homePage类中!改后就正常了:
[Click] [debug] automapped pages:
[Click] [debug] /LabsInfo.htm -> rc.yuzone.page.user.LabsInfoPage
[Click] [debug] /click/error.htm -> CLASS NOT FOUND
[Click] [debug] /click/not-found.htm -> CLASS NOT FOUND
[Click] [debug] /LabsInfo.htm -> rc.yuzone.page.user.LabsInfoPage
[Click] [debug] /click/error.htm -> CLASS NOT FOUND
[Click] [debug] /click/not-found.htm -> CLASS NOT FOUND
另外,我发现如果不在Click配置文件中作相应的配置,那么只要是被servlet捕获的页面,框架都会默认将没有进行映射的页面转向not-found.htm页面。(提示:修改click.xml的mode标签或Pages标签)