长期以来,对 Java Server Faces 的导航支持的抱怨就没有停止过。去年秋天,Ignacio Coloma 在博客中记录了他的沮丧 :
……入门确实简单:组件 / 表现器(renderer)/ 验证器 / 转换器模型非常清晰,并且很容易上手和运行。验证模型工作起来就像是魔法,JSP 页面非常小,你可以立马得到一个可工作的应用骨架。接着将页面链接起来,于是地狱开始了……
上周,著名 Web 应用开发者 Matt Raible 在他的博客中关于 JSF 有类似的评论 :
……如果你准备开始使用 JSF,我强烈推荐 Facelets 或 Shale/Seam……Shale 和 Facelets 有 2 个问题——这些项目的活跃程度很低。Shale 的创建者们还在守护着它,因此即使它很少被使用,你仍然可能得到你问题的答案。然而,Facelets 似乎正遭受着“被开发者遗弃”的惨境。 结论:不要因为 JSF 是“标准”就简单地去使用它。要使用其它开发更活跃,并且专为 Web 而设计的框架。就基于组件的框架来说,最流行的是 Tapestry 和 Wicket, RIFE 和 Click 次之。如果你仍然想用 JSF,你可能应该使用 Seam,但是,不要因为 JSF 是“标准”就简单地使用它。
几家公司正积极地着手于修改和增强 JSF,然而使用的是基于JSF 的JBoss Seam 和 Spring Web Flow 提供的对 JSF 的支持。最近,来自 Interface21 的 Keith Donald 的 Spring Web Flow 与 JSF 集成详解提供了一个实现导航逻辑和管理应用程序状态的更好模型:
作为 JSF 的扩展,Spring Web Flow 负责导航规则和管理与用户交互相关联的状态(亦称会话,conversations)。JSF 开发人员可以从这个增强的导航模型中获益。概括地说,Web Flow 增加了: > - 无需服务器重启,即可动态改变导航规则;
- 流程定义语言内建了完整的前进、后退、刷新、重定向和递归导航能力;
- 通过流程定义概念,模块化和封装导航逻辑。
为适应状态管理的需要,除了 JSF 标准的 Request、Session 和 Application,Web Flow 增加了会话(conversation)、闪存(flash)和流程(flow)状态。
在 Donald 文章的评论中 Matt Raible 写道:
……我认为 Interface21 和 JBoss 都在 JSF 问题的解决方案上投入很多是一种很有趣的现象。难道通过支持 JSF 可以获得很多钱?实际上,你会喜欢这两家公司所做的事情:他们正在构建克服 JSF 短处的解决方案,并且将他们的解决方案免费地回馈给社区。更酷的是,两家公司正视图将他们的解决方案集成进下一版本的 JSF。就我个人观点,这将使每个人受益……
查看英文原文: Spring Web Flow Enhances JSF Navigation and State
译者简介:胡键,自 2000 年西安交通大学硕士毕业后一直从事软件开发。2002 年开始使用 Java,在项目开发中经常采用 OpenSource 工具,如 Ant、Maven、Hibernate、Struts 等,目前正在研究信息集成方面的规范和技术。可以通过 jianhgreat AT hotmail.com 与他联系,或访问博客: http://foxgem.javaeye.com/ 。为 InfoQ 中文站贡献内容,请邮件至 china-editorial@infoq.com 。
评论