seam对jsf的控制

读一点写一点,写完发布到seam圈子,读得很粗糙,有错误请指出。

seam通过两个监听器介入jsf,SeamPhaseListener,DocumentStorePhaseListener

SeamPhaseListener的getPhaseId()方法返回new PhaseId("ANY"),意味着监听所有阶段
DocumentStorePhaseListener的getPhaseId()方法返回new PhaseId("RENDER_RESPONSE")

1、恢复视图
  之前,seam将把Contexts中的状态指向ernalContext下的对应状态,conversationContext设为空
  jsf,试图从facesContext恢复视图,如果为空,从xml类型文件构建视图,执行doPerComponentActions(facesContext, viewRoot);计算bind表达式
  之后,从请求参数取得对话id,接下来发生的事seam文档说得很清楚了,恢复或新建对话,conversationContext内部状态指向session上下文。conversationContext的管理比较有趣,请参见[url]http://afadgaeg.iteye.com/blog/286963[/url]的结尾部分,seam在这里还处理页面参数,包括转换,验证和更新到模型(按照pages.xml的配置)

2、应用请求值
  seam不干预,jsf在组件树上执行

3、执行验证
  之前,不干预
  jsf,在组件树上执行验证
  之后,如果验证失败,触发一个seam事件

4、更新模型值
  seam不干预,jsf在组件树上执行

5、执行应用
  之前,不干预
  jsf,在组件树上执行事件
  之后,这里还没看明白,与事务有关,增加事务失败消息

6、渲染
  之前,
  //SeamPhaseListener,执行pages.xml定义的页面动作等内容,并有可能执行导航。保存对话和页面流标志,
Pages.preRender(FacesContext facesContext)方法是主角,该方法有较为详细的注释。preRender()调用Pages.callAction(FacesContext facesContext)方法执行请求参数"actionOutcome"和"actionMethod"的页面动作和导航(如果参数存在的话)。
如果并非如以上,最终seam调用Page.preRender(FacesContext facesContext)以执行在pages.xml中定义的页面动作,并可能导航。
Pages中@Create public void create()完成读取pages.xml并把配置参数维护在一系列对象中,其中导航规则维护在Navigation实例中。
导航通过调用NavigationHandler.handleNavigation(...)进行,SeamNavigationHandler继承了NavigationHandler并覆盖了handleNavigation(...),在handleNavigation(...)中优先使用Pages.navigate(...)导航,Pages.navigate(...)根据Navigation实例中的规则进行导航。
seam的faces-config.xml中有如下配置

<navigation-handler>org.jboss.seam.jsf.SeamNavigationHandler</navigation-handler>
<view-handler>org.jboss.seam.jsf.SeamViewHandler</view-handler>


待续。。。
  //DocumentStorePhaseListener应该是与pdf,word等特殊文档的请求有关,猜的
  jsf,渲染
  之后,保存对话,保存页面流,SeamPhaseListener做收尾清理工作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值