写点什么

Spring Web Flow 增强 JSF 导航和状态

2007 年 4 月 26 日

长期以来,对 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

2007 年 4 月 26 日 07:45428
用户头像

发布了 255 篇内容, 共 45.4 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

如果朋友圈没有点赞功能,你还会发朋友圈吗

彭宏豪95

微信 产品 互联网 写作

JavaScript 语言通识 — 重学 JavaScript

三钻

Java 前端进阶

2020年秋招阿里136道Java高级岗面试题(含答案及复习资源)

Java架构之路

Java 程序员 面试 算法 编程语言

Java程序员月薪多少K才能在北上广买得起房?

Java架构之路

Java 程序员 编程语言

第三周作业

Geek_ac4080

架构师训练营 第三周作业

haha

极客大学架构师训练营

架构师训练营第一期 - 第四周课后 - 作业一

极客大学架构师训练营

SpringBoot-技术专题-启动原理

李浩宇/Alex

lldb常用命令与调试技巧

iOSer

ios lldb常用命令 lldb调试技巧

架构师训练营1期第三周作业

木头发芽

国庆期间,我造了台计算机

yes的练级攻略

计算机 底层

手把手教你锤面试官 03——Spring怎么那么简单

慵懒的土拨鼠

互联网应用系统技术方案主要解决什么问题?

博古通今小虾米

开源的意义与价值

Braisdom

Java 开源 ORM

~~寒露节记~~

wo是一棵草

Python时间序列分析简介(2)

计算机与AI

Python 时间序列

Web前后端:如何分离,如何解耦?

华为云开发者社区

前端 后端 开发

MySQL-技术专题-问题分析

李浩宇/Alex

字节跳动 Flink 单点恢复功能实践

Apache Flink

flink

这可能是GitHub上最适合计算机专业学生看的编程教程

小Q

Java 学习 编程 面试 基础

如何使用 dotTrace 来诊断 netcore 应用的性能问题

newbe36524

微服务 .net core netcore ASP.NET Core

关于代码审查的一点体会

KJ Meng

敏捷开发 研发管理 代码审查 Code Review

usdt承兑商支付系统开发源码,区块链支付搭建

WX13823153201

节日快乐…吗?

小天同学

个人感悟 国庆中秋 假期 节日

第四周

Geek_fabd84

看动画学算法之:linkedList

程序那些事

数据结构和算法 看动画学算法 看动画学数据结构 算法和数据结构

各角色如何从DevOps中受益?

陈琦

DevOps 产品经理 测试 开发 运维工程师

Nginx 整合 FastDFS 实现文件服务器

哈喽沃德先生

nginx 文件系统 分布式文件存储 fastdfs 文件服务器

MySQL-技术专题-主从复制原理

李浩宇/Alex

MySQL-技术专题-查询速度性能

李浩宇/Alex

技术实操丨SoundNet迁移学习之由声音分类到语音情感识别

华为云开发者社区

AI 数据 语音识别

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

Spring Web Flow增强JSF导航和状态-InfoQ