JSF中Initial Request 和 Postback Request 的区别

50 篇文章 0 订阅
50 篇文章 11 订阅

首先来看JSF的生命周期图:



一个完整的JSF Lifecycle 有以下流程:

恢复视图(Restore View) --> 应用请求值(Apply Requests) --> 处理验证(Process Validations) --> 更新模型(Update Model Values) --> 调用应用程序(Invoke Apjplication) --> 渲染响应(Render Response), 其中,无论哪个阶段发生错误(Exception),都会直接跳转到 Response 阶段而不会继续走下去。


一个 Initial Request 是指用户通过点击一个链接(Link)或直接通过浏览器地址栏输入Url所发送的请求,其实相当于 GET 请求。JSF在收到这类请求时,只会走 Restore VIew --> Render Response 流程,后面的阶段都会跳过。如果被请求的页面包含以下代码

<h:inputText value="#{user.name}" />

的话,那么JSF会在 Render Response 阶段解析该EL表达式,并解析一次。这样做的坏处是,假如用户直接通过URL访问的页面中有需要查询数据库才能读取来的数据,那么由于JSF根本没有走完后面的流程,所以这些数据就无法显示。Seam则通过 Page Action 对这一不足做出了改进,即Seam可以在 Render Response 之前执行一个或多个 action 方法,这样数据就能正常显示了。



一个 Postback Request 是指用户提交表单或者单击了绑定有action属性的链接时所发出的请求,相当于Post请求。JSF在收到此类请求时,会走完生命周期的全部流程。就上面的例子来说,JSF会在不同的阶段多次解析这个EL表格式,而不是像 initial request 那样只解析一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值