InfoQ

新闻

Spring Web Flow增强JSF导航和状态

作者 Scott Delap译者 胡键 发布于 2007年4月26日 上午7时45分

社区
Java
主题
Web框架
标签
Spring Web Flow
长期以来,对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 SeamSpring 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

没有回复

回复

独家内容

专访开源项目Amoeba架构师陈思儒

DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。

使用JSF、Ajax和Seam开发Portlets(2/3)

作为三期系列文章的第二部分,本文延续了上一期内容,介绍了RichFaces,包括如何把RichFaces集成到之前提到的示例应用中、如何部署RichFaces porlet和RichFaces的多种特性和功能。

Jeff Barr谈论Amazon Web服务

Amazon Web Services(AWS)的传道者Jeff Barr讨论了SimpleDB、S3、EC2、SQS、云计算、Amazon的不同服务如何与应用交互、AWS的起源、SimpleDB和微软SQL Server Data Services、AWS cloud的全球化、三月份的AWS停机。

用Erlang实现领域特定语言

Erlang的并发模型很有名,它的健壮性也很有名。但其他方面呢?在这篇文章里,Dennis Byrne演示了如何用Erlang建立内部DSL。

基于Rails的企业级应用剖析

本视频主要以FreeWheel为例,对一个基于Rails的企业级应用进行了剖析。其中包括:FreeWheel的架构、部署、数据库的问题、REST API、敏捷开发过程、如何去写测试以及持续集成等等。

JavaFX技术预览

JavaFX显示了Sun的Java系列产品市场方向的一个重大转变。随着1.0版的即将发布,InfoQ以JavaFX预览版为参考,与Sun高级工程师Joshua Marinacci探讨了即将发布的1.0正式版。

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。