了解带/不带重定向的 JSF 生命周期阶段

Understanding JSF Lifecycle phases with & without Redirection

假设有 2 个 JSF 页面和一个支持 bean

index.xhtml- 带有视图参数和表单

支持 bean- 操作方法,从 index.xhtml[导航到 result.xhtmlNO REDIRECTION

result.xhtml- 没有表格但输出一些文本

考虑一个简单的案例

index.xhtml-

发出 GET 请求

像这样的视图参数-

http://localhost:8080/Leonard/faces/ch2/ch2_8/index.xhtml?playernameparam=HAMZA&playersurnameparam=YOUSUF

执行的阶段-

响应-

点击提交-

执行的阶段-

注意:这是一个 POSTBACK,生命周期阶段是为 POST 请求执行的index.xhtml

响应-

响应包含 result.xhtml 页面的内容,然后在浏览器中清楚地反映出来 window。在呈现时,生命周期也必须为 result.xhtml 视图执行。为什么我在控制台中看不到此视图的阶段?

我很清楚,通过重定向,在 POSTBACK 上,index.xhtml 的渲染响应阶段将被跳过,然后所有阶段result.xhtml 将被解雇。

您似乎期望生命周期是基于视图的。这确实会引起混乱。

事实上,生命周期是基于请求的,而不是基于视图的。那应该清除一切。如果您考虑一下,在同一个 HTTP 请求期间,真的没有必要重做收集、转换和验证请求参数以及更新模型值和调用操作的整个周期。

另请参阅:

  • What is the difference between redirect and navigation/forward and when to use what?