Java JSF:初始请求和回发请求?

Java JSF:初始请求和回发请求?,java,jsf,jakarta-ee,postback,Java,Jsf,Jakarta Ee,Postback,请看下面JSF中的代码行 <h:inputText id="name" value="#{customer.name}" /> 引自java.sun.com: 对于包含此标记的页面的初始请求,JavaServerFaces实现在生命周期的呈现响应阶段评估{customer.name}表达式。在这个阶段,表达式只从Customerbean访问name的值,就像在立即求值中所做的那样 对于回发请求,JavaServerFaces实现在生命周期的不同阶段评估表达式,在此期间从请求中检

请看下面JSF中的代码行

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

引自java.sun.com:

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

对于回发请求,JavaServerFaces实现在生命周期的不同阶段评估表达式,在此期间从请求中检索值,进行验证,并传播到CustomerBean


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

初始请求是浏览器为显示带有
${customer.name}
标记的页面而发出的请求。当浏览器发布部分或所有页面值,然后将第一次发布的同一页面返回给客户端时,会发生回发。例如,这可能是验证错误的结果


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

初始请求仅通过还原视图和呈现响应阶段,而回发请求过程在所有阶段下进行(应用请求值、验证阶段等)


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

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

当你有一个打开的页面并且你做了一些骇客的事情时,点击:window.location=newUrl->你也会提出一个初始请求


当您执行类似jQuery(“somoeSubmitButton”)的操作时,单击(),您将发布到服务器,旧视图将被恢复—如果您询问faces context.isPostback()?你会实现的

不总是这样。所有6个阶段都将在带有视图参数的初始GET请求的情况下执行。此答案不是100%正确@ShirgillFarhanAnsari的评论是正确的,答案也得到了更好的更新。