2010-05-12 60 views
16

请看看下面这行代码在JSF从java.sun.comJSF:初始请求和回发请求?

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

报价:

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

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

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

回答

12

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

了解正在渲染的当前视图是否是回发的结果,这很有用。例如,您可能希望显示一条消息作为回发的结果,但不是每次页面刷新。

23

初始请求仅通过还原视图&呈现响应阶段,同时在所有阶段回发请求过程(应用请求值,验证阶段等)。

初始请求是通过点击一个链接,粘贴在地址栏中的URL创建的,而回发请求是通过点击提交按钮或POST请求提交表单创建。

+1

并非所有的时间。所有6个阶段将在具有视图参数的初始GET请求的情况下执行。 – 2016-03-21 12:44:16

+0

这个答案不是100%正确的。 @ShirgillFarhanAnsari的评论是正确的,答案是更好的更新。 – 2016-05-18 07:51:56

0

通常情况下,只有一个初始请求,当您访问浏览器并将URL写入应用程序时。 这会通过Cookie向服务器发送HTTP GET请求,例如JSESSIONID,但不包含要恢复的javax.faces.viewid。

当你有一个打开的页面,你做的hacky的东西舔:window.location = newUrl - >你也将提出一个初始请求。 (),你会发布到服务器,你的旧视图将被恢复 - 如果你问脸部的情况context.isPostback()?你会变得真实。