对于 Practical RichFaces 的第五、六章的学习,可以说是很 “ 痛苦 ” 的。不像之前讲 <a4j:> 那样,很多概念和思路都是在摸索和颠覆中,得出来的。 虽然 Practical RichFaces 写的不错,但是其中也有不少语焉不详的地方,这时候, RichFaces 的在线 Demo 和用户指南就非常有用了。通过仔细阅读,才理解 里面的一些细节。
开始我有一个误区,以为所有的 Ajax Request 都是由 <a4j:> 的 4 个控件完成的, <rich:> 只是做一些边边角角比如 JavaScript 特效之类的工作。学到 <rich:suggestionbox> 的时候,发现原来 <rich:suggestionbox> 也在和 Server 进行着交互,以获取建议值列表。
于是我轻易的掉进了第二个误区,认为 <rich:> 类的控件不能引发页面级的 Ajax Requset ,不能引发表单提交。当我学到 <rich:simpleTogglePanel> 以及其他可以切换的 Panel 的时候,我的结论又失效了。 switchType 或 mode 属性的 Server 和 Ajax 模式都可以引发表单提交,只是刷新的范围不同。
到这里,我只能再次去归纳所谓的结论,也就是:
1. <a4j:> 和 <rich:> 都能产生 Ajax Request ,只是前者给与用户充分的自由度;而后者只给用户有限的自由度,你只能选择控件提供的有限的几种模式。
2. 对于 <rich:> 类控件来说,能否产生表单提交,完全由控件自身决定,具体控件具体分析。
希望我上面的简单结论不要被我明天的思路再次颠覆,呵呵。另一方面,也同时感到中文 RichFaces 书籍的匮乏。前两天在网上书城好不容易查到一本关于 RichFaces 的书。一看评论,被读者们骂得狗血喷头。这两天通过读 Practical RichFaces ,发现老外写书有时也会照搬文档(不过人家还是会把例子重写一遍,或者综合出一些新的东西)。想想老外尚且会照搬文档,国内的作者们生硬的翻译后抄为己用,也就不足为奇了。看看国内的作者们的巨著,大部分都是“编著”, 95% 从别处“编”(抄)来, 5% 自己著。真正敢写 XXX “著”的,真是凤毛麟角。
因此,我宁可看英文原版的,理解个百分之八九十,也比看国内“原创”的二手资料强得多。至少没有那些劣质作者的一番曲解和蹩脚翻译。