【问题标题】:JSF: initial request and postback request?JSF:初始请求和回发请求?
【发布时间】:2011-02-18 20:31:51
【问题描述】:

请看下面JSF中的这行代码

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

引用自 java.sun.com:

对于包含此标记的页面的初始请求,JavaServer Faces 实现在生命周期的呈现响应阶段评估 #{customer.name} 表达式。在此阶段,表达式仅从客户 bean 访问 name 的值,就像在立即评估中所做的那样。

对于回发请求,JavaServer Faces 实现在生命周期的不同阶段评估表达式,在此期间从请求中检索值、验证值并传播到客户 bean。

我不确定我是否理解初始请求回发请求。客户端浏览器是否向网络服务器发出两个不同的请求?

【问题讨论】:

    标签: java jsf jakarta-ee postback


    【解决方案1】:

    初始请求是浏览器为了显示带有${customer.name} 标签的页面而执行的请求。回发发生在浏览器发布部分或全部页面值,然后将最初发布的同一页面返回给客户端时。例如,由于验证错误,可能会发生这种情况。

    了解当前呈现的视图是否是回发的结果很有用。例如,您可能希望在回发后显示一条消息,但不是每次刷新页面时都显示。

    【讨论】:

      【解决方案2】:

      初始请求仅通过恢复视图和呈现响应阶段,而在所有阶段(应用请求值、验证阶段等)的回发请求过程。

      通过单击链接、在地址栏中粘贴 URL 来创建初始请求,而通过单击提交按钮或任何发布请求发布表单来创建回发请求。

      【讨论】:

      • 并非一直如此。所有 6 个阶段都将在带有视图参数的初始 GET 请求的情况下执行。
      • 这个答案不是 100% 正确的。 @ShirgillFarhanAnsari 的评论是正确的,答案更新得更好。
      【解决方案3】:

      通常,当您转到浏览器并写入应用程序的 URL 时,您只会有一个初始请求。 这会使用您的 cookie 向服务器发出 HTTP GET 请求,例如JSESSIONID,但不是带有要恢复的 javax.faces.viewid。

      当你有一个打开的页面并且你做一些 hacky 的东西时 lick: window.location = newUrl -> 你也会发出一个初始请求。

      当您执行 jQuery("#somoeSubmitButton").click() 之类的操作时,您将 POST 到服务器并且您的旧视图将被恢复 - 如果您询问 faces context.isPostback() ?你会得到真实的。

      【讨论】:

        猜你喜欢
        • 2010-09-14
        • 1970-01-01
        • 2015-11-09
        • 2017-04-24
        • 2014-07-25
        • 1970-01-01
        • 2020-04-07
        • 1970-01-01
        • 2015-10-16
        相关资源
        最近更新 更多