怀疑论者的JSF

本月,Rizon Software 的 CTO Paul Tabor 应邀与我一道解除针对 JSF 的 FUD。在本文中,我们将介绍 JSF 转换和验证框架的概念,它比您所想的要容易使用得多,也灵活得多。

首先我们将介绍应用于 JSF 生命周期的转换和验证过程,然后展示一个简单的 JSF 应用程序中的默认转换和验证过程。接着将展示如何创建和插入自定义的实现,以应对要求更高的场景。正如 Rick 在以前的文章中所说的,我们会理论与实践并重,先介绍概念,再用一个实际例子说明这些概念的应用。示例应用程序将涵盖大多数转换和验证用例,虽然只是初级的。

注意,示例应用程序的默认编译环境是 Maven,不过, 还提供了一个 Ant 脚本。可以单击本页顶部或者底部的 Code 图标下载示例源代码。为了简便起见,您会发现,该例子的设置与上一篇文章中的一样。关于构建环境配置的更多说明,包括在 Ant 环境中而不是在 Maven 环境中编译和运行示例应用程序的说明,请参阅参考资料。

转换和验证

虽然在 JSF Web 应用程序中使用转换和验证不一定要理解 JavaServer Faces 生命周期的基础知识,但是在深入转换和验证内容之前,最好对一些基本知识做一回顾。此外,掌握一点 JSF 生命周期技巧可以极大地帮助简化 Web 应用程序的开发工作。还有助于更好地理解 JSF 的可插入能力。

图 1 描绘了我们所说的“基本 JSF 生命周期”。 基本 是在暗示这只是一个典型的处理所提交表单值的请求-响应(request-and-response)场景。

图 1. 基本 JSF 生命周期

显然,不同的场景对这里重点描述的生命周期有不同的影响。我们将在本文稍后介绍其中一些场景。现在,只需要注意转换和验证过程发生在应用请求值、处理验证 和呈现响应 阶段即可。

我们将在稍后介绍为什么转换和验证会在这些阶段出现,但是首先让我们澄清一个更基本的问题:转换 是什么?简单地说,转换是确保数据拥有正确的对象或者类型的过程。下面是两个典型的转换:

字符串值可以转换为 java.util.Date。

字符串值可以转换为 Float。

至于验证,它用于确保数据包含所期望的内容。下面是两个典型的验证:

java.util.Date 的格式为 MM/yyyy。

Float 在 1.0 和 100.0 之间。

关注生命周期阶段

转换和验证的主要目的是确保在更新模型数据之前已经经过了正确的无害处理。之后,当需要调用应用程序方法用这些些数据实际做一些事情 时,就可以有把握地假定模型的某些状态。转换和验证使您可以侧重于业务逻辑,而不是侧重于对输入数据进行繁琐的资格认定,比如 null 检验、长度限定、范围边界,等等。

因此,在更新模型数据 生命周期阶段中,在组件数据被绑定到 backing bean 模型之前 进行转换和验证处理是有道理的。正如图 1 所示,转换发生在应用请求值阶段,而验证发生在处理验证阶段。图 2 突出显示了这些阶段。

图 2. 要关注的转换和验证阶段

时间: 2024-10-27 19:35:45

怀疑论者的JSF的相关文章

怀疑论者的JSF: JSF应用程序的生命周期

与很多流行的观点不同,我们无需了解技术工作原理的所有细节,就可以编写 JSF 应用 程序.您只需要给自己设置一个项目,并从头到尾不断修修补补,这样就可以学习到大量的 知识.另一方面,理解必要的基础知识可以使您的开发工作更加有效 -- 而且会节省很多 时间. 在本系列 怀疑论者的 JSF 的第 2 篇文章中,我们将逐一介绍一下 JSF 请求处理生命周 期的 5 个阶段.我们将介绍在每个阶段中会发生什么,以及这些阶段是如何相互连接在一起 的,然后使用一个示例程序来展示实际的生命周期.随着学习的深入,

怀疑论者的JSF: 消除关于JSF的FUD

FUD 已经围绕 J2EE 的 JavaServer Faces (JSF) 技术多时了,我觉得现在该让它停止了 ,或者至少给出一种公允的说法.关于 JSF 的第一个谣传是,需要一个 WYSIWYG 拖放工具 来进行 JSF 开发.第二个谣传是,JSF 不支持诸如 Struts 这样的 MVC Model 2 框架.最 后一个,也是最致命的谣传是,JSF 开发就是难. 在这个 4 部分的系列文章中,我将尽量以最实际的方式消除所有这三个谣传,这种方式 就是教您利用 JSF 进行开发.实际上,如果您

怀疑论者的JSF: JSF组件开发

组件模型的关键考验就是:能否从第三方供应商购买组件,并把它们插入应用程序?与可 购买可视 Swing 组件一样,也可以购买 Java ServerFaces (JSF) 组件!需要一个好玩的日 历?可以在开源实现和商业组件之间选择.可以选择购买一个,而不是自行开发复杂的基于 Web 的 GUI 组件. JSF 拥有一个与 AWT 的 GUI 组件模型类似的组件模型.可以用 JSF 创建可重用组件. 但不幸的是,存在一个误解:用 JSF 创建组件很困难.不要相信这些从未试过它的人们的 FUD!开发

《程序员度量:改善软件团队的分析学》一案例分享:度量和怀疑论者

案例分享:度量和怀疑论者 我们团队里一位满头华发.经验丰富的程序员给了我一个脸色,仅仅扬了扬眉,给了一个假笑.是的,这个脸色是在告诉我,把度量告诉那些年轻的家伙吧,看他们打算怎样帮助提升我们的团队,你们做你们的,我不会搞砸什么,他的沉默表明了他的观点.我不想说什么,但是他仰起的下巴让我知道他并不买账.他是一个怀疑论者. 一个月过去了.我们召开了团队会议,我给每一位同事展示了一组公司和产品的度量.它展示了我们的产品目前情况怎么样,我们怎样与竞争产品(就我们知道的而言)相比较,已完成的单个特性如何.

JavaServer Faces框架使用的设计模式

server|设计 本文中,作者 Anand Joshi 使用 JSF 框架中的设计模式阐释了 JavaServer Faces (JSF) 体系结构.他讨论了 JSF 体系结构中使用的 GoF 设计模式,以及这些模式在 JSF 框架中的作用.任何对设计模式和 JSF 体系结构有一定了解的人都能从 Anand 详细的介绍中有所收获.*读者应该对 GoF 设计模式和 JSF 技术有很好的了解. 设计模式可以帮助用户在更高层次上抽象细节,更好地理解体系结构.如果比较熟悉 GoF 设计模式和 Java

J2EE技术中标准组件介绍大全

·Enterprise JavaBeans(EJB)技术使用一个组件模型来简化中间件应用程序的开发,它提供了对事务.安全性和数据库连接等服务的自动支持.(参见教程 "Enterprise JavaBean 基础":参见 EJB 最佳实践 系列:阅读 "使用 EJB 3.0 Java Persistence API 设计企业应用程序".) ·Portlet Specification 定义了一套用于 Java 门户计算的 API,可以解决聚合.个人化.表示和安全性方面

维基解密单挑CIA,却被怀疑背后有俄罗斯撑腰

  在泄露了美国中情局(CIA)使用间谍软件攻击智能设备的文件后,维基解密(WikiLeaks)创始人阿桑奇很快表示他将提供更多相关信息帮助科技公司修复漏洞.不过,硅谷的科技大佬们竟不以为意,而且现在更多的怀疑论者又调转枪头,瞄准阿桑奇和俄罗斯的关系. 在伦敦的厄瓜多尔驻英使馆中,阿桑奇发布声明称,将专门给科技公司"提供一些技术细节,用以修补漏洞".但是,据英国<卫报>报道,硅谷对阿桑奇的好意并不太感兴趣,反而质疑阿桑奇的背后是否有俄罗斯的影子出没. 于是,这样一个本质上跟

CCAI 2017 | 专访德国语言技术领军者 Hans Uszkoreit:深度学习还不足以解决 NLP 核心问题

会前,我们采访到了大会 Keynote 嘉宾.德国人工智能研究中心科技总监 Hans Uszkoreit 博士. Uszkoreit 博士是中德两国人工智能合作的核心人物,负责德国人工智能研究中心在中国的所有合作项目,今年 3 月,他刚被任命为在北京新成立的人工智能技术中心(AITC)总监兼首席科学家.在访谈中,Uszkoreit 博士谈到了人工智能在工业 4.0 和商业智能上的应用,以及中.美.欧在人工智能领域的差异. 对于他的老本行,Uszkoreit 博士认为,语言技术是人工智能的核心部分

Linux背后的人

1. Linus和Bill     似乎在一夜之间这个名字突然变得同象比尔.盖茨一样的耳熟能详.但是比尔.盖茨哪怕身价有数不清倍的百万美金也永远不会变成Linux Torvalds.这位29岁的芬兰人简单而强大的Linux操作系统的创造者超越了盖茨的神话.也有传闻说盖茨是一个卓越的程序员但Linus是货真价实的高手.还在大学里时他就完成了一个货真价实的操作系统.年轻时的盖茨把拷贝他自己平庸的程序的程序员同行称为"贼"而慷慨的Linus把他的杰作与全世界共享.哪个人哪种运动会取胜也许会决