我终于有些空闲时间,阅读了由 JSF 1.2 Components
编写的这本书,并想与大家分享我的感受。
第一印象
当我完成第一章后,我觉得我在读一本为初学者JSF GUI开发者所写的书。也许他们已经学习了JSF的一些非常高级的基本概念,需要快速了解存在于生态系统中的一些组件库。看起来作者几乎不关心JSF的生命周期和JSF的一些其他架构点。最初,Ian只是描述如何使用标准组件创建页面。这一章可能对那些已经看过任何IDE中存在的某些JSF启动项目的人来说并不有趣。
对未来的Facelets开发者有启发性的章节
关于“Facelets”的下一章真的非常棒,在读过之后我认为这是书中最好的章节,也是购买这本书的主要原因。基本原理、功能和相对于JSP的优势都解释得非常清楚,方式简单。我认为在阅读了这一章后,选择Facelets和JSP将变得简单,只需开始开发而无需阅读官方文档或任何额外的文章。
MyFaces Tomahawk 和 Trinidad 章节的内容
汤姆虎克章节,就像标准组件章节一样,只是组件的简要使用概述。这些组件以某种方式表示,并在应用程序中提供了一组良好的简单示例。特立尼达章节对读者来说更有趣,因为它不仅包含了标签库概述,还包含了良好的常见功能描述,例如Ajax、皮肤和客户端验证/转换。该章节非常适合作为对功能及启动的通用概述,以阅读库的详细参考。书中稍后会有一份单独的错误概述,但这一章中让我感到困惑的部分需要被突出显示——“打开对话框”部分有一段代码(用于构建列表并选择产品),这与之后的截图(仅从颜色选择器中选择颜色)完全不同,这真的很奇怪。
冰面孔章节
本章也包含了对冰面孔组件的良好概述。总的来说,它只是缺少了对Direct To Dom技术的覆盖,而Direct To Dom技术是框架的一个关键特性。阅读本章后,我对框架仍然有很多疑问,但这并不是这本书本身的错误。作者描述了一些在使用之前需要框架文档回答的良好观点。
Seam、Ajax4jsf和RichFaces章节
现在我们来到了我一直在等待的章节,特别是由于我是RichFaces的核心开发者。不幸的是,这些章节对我来说非常令人困惑。
我们先从Seam章节开始。我们的JSF GUI初学者开发者现在应该是一位有J2EE经验的开发者。本章与所有之前章节的最大区别是开发者现在应该关注后端对象和服务。在本书的前部分,这些话题只是略过。在我看来,这与本书的整体水平变化很大。
然后我需要强调这些章节中信息的一般性困惑。例如,Seam和RichFaces部分包含了一些核心Ajax4jsf信息(其中一些在Ajax4jsf章节中缺失),阅读Ajax4jsf时需要将注意力转移到一些再次突出的Seam点上。本章的代码细节水平显著增加,这也是一些困惑和偶尔丢失点的部分原因。一个更加令人担忧的问题是,RichFaces章节突出并演示了一些不良做法。例如,像在表格列中使用重量级组件,这可能导致实际应用程序中的性能问题(除非特别处理)。还有关于数据迭代组件逻辑分组的混淆。a4j:repeat是一个所有迭代组件集的基础组件,它与一个列表一起组合,其他列表单独出现。但总的来说,如果不考虑这些章节中信息稍微混乱以及水平与其他章节不同的实际情况——所有基本点似乎都得到了涵盖,读者在阅读后将对技术有一个良好的概述。
错误
我认为错误是这本书的主要问题。它破坏了阅读过程中可能产生的所有良好印象。许多(考虑到它已经过了编辑过程)代码片段和描述都含有误印、复制粘贴问题和一些重复使用相同句子的错误,这让我等人在阅读时无法集中注意力。
总结
阅读后的感受是矛盾的。这本书确实可以作为初学者的好指南,但不应夸大其词。此外,在需要理解的情况下,样本细节的低水平有时确实阻碍了从10分中达到4分的评价。