浅谈JSF的两大两点:面向组件编程和事件驱动模式
2007-07-19 11:26
746 查看
最近做完了一JSF框架开发的大型项目,有感于对JSF框架的使用。
JSF的两个大亮点就是:
面向组件编程和事件驱动模式,
1.面向组件(component)模式,这里可以有两层意义上的组件,一个就是JSF支持的UI组件(不同的支持厂商会有不同的UI组件实现,比如apache,Oracle的),还有一种意义上的组件,就是JSF框架的开放性――让用户定义自己的组件,这种组件包括在lifesicle上的一些组件,比如刚才说的UI组件,validator组件,handler组件等。
2.事件驱动模式,是相对于struts的MVC模式而言。Struts里,一个form只能对应一个Action(dispatchAction),也就是说,在struts里,一个表单只能对应一个事件,struts 这种事件方式,教做application event,而application event和component event 相比,是一种粗粒度的事件。
Struts里,表单对象ActionForm是一种对象,代表了一个应用,这个对象常常包含了页面上的所有字段,因此一个表单对应一个事件,那当我们需要将粒度细化到字段一级的时候,struts本身就不能满足需求了,往往需要使用javascript。大量的脚本充赤在页面上,显然不是很高明的做法。
而事件驱动模式,则是方法一级的。因为JSF里有了valuechangeListener的帮助。
事件驱动成了可能。
JSF允许为组件提供两个事件,Value Changed listener 和 action。从JSF的活动周期来看的话,valuechanged listener是在action之前的。所以。
JSF的两个大亮点就是:
面向组件编程和事件驱动模式,
1.面向组件(component)模式,这里可以有两层意义上的组件,一个就是JSF支持的UI组件(不同的支持厂商会有不同的UI组件实现,比如apache,Oracle的),还有一种意义上的组件,就是JSF框架的开放性――让用户定义自己的组件,这种组件包括在lifesicle上的一些组件,比如刚才说的UI组件,validator组件,handler组件等。
2.事件驱动模式,是相对于struts的MVC模式而言。Struts里,一个form只能对应一个Action(dispatchAction),也就是说,在struts里,一个表单只能对应一个事件,struts 这种事件方式,教做application event,而application event和component event 相比,是一种粗粒度的事件。
Struts里,表单对象ActionForm是一种对象,代表了一个应用,这个对象常常包含了页面上的所有字段,因此一个表单对应一个事件,那当我们需要将粒度细化到字段一级的时候,struts本身就不能满足需求了,往往需要使用javascript。大量的脚本充赤在页面上,显然不是很高明的做法。
而事件驱动模式,则是方法一级的。因为JSF里有了valuechangeListener的帮助。
事件驱动成了可能。
JSF允许为组件提供两个事件,Value Changed listener 和 action。从JSF的活动周期来看的话,valuechanged listener是在action之前的。所以。
相关文章推荐
- 面向对象,面向服务,面向组件三种编程模式有什么区别
- 面向过程-事件驱动编程-消息机制【VC MFC】
- JScript|Event]面向事件驱动的编程(二)--实例讲解:将span模拟成超连接
- JScript面向事件驱动的编程
- 采用事件驱动编程以及GUI组件开发一个贷款计算器
- JScript|Event]面向事件驱动的编程(二)--实例讲解:将span模拟成超连接
- 面向组件,状态机,消息驱动,三合一的编程模型
- 面向对象、面向服务、面向组件三种编程模式有什么区别?分别适用于哪些领域的开发?
- 面向对象编程、面向服务架构、基于组件开发三种编程模式的区别和适用领域
- JScript面向事件驱动的编程
- 面向对象编程,面向服务架构,基于组件开发三种编程模式有什么区别?
- 面向UI编程:ui.js 1.1 使用观察者模式完成组件之间数据流转,彻底分离组件之间的耦合,完成组件的高内聚
- 「游戏引擎Mojoc」(4)面向组件-状态机-消息驱动3合1编程模型
- 事件驱动的JScript面对象编程
- 设计模式学习笔记二:面向对象基础六之委托与事件
- 利用规则引擎打造轻量级的面向服务编程模式
- 面向组件编程之Unity 4.怎样得到游戏场景中的对象 例如:layer/tag&&SetActive隐藏游戏物体
- 如何面向学生主体与项目驱动设计软件工程教学模式
- 面向组件编程之Unity 6.怎样复制游戏物体 关键字:time/<GameObject>/Instantiate/Debug
- Python交互式编程导论----事件驱动编程