应用请求值和更新模型值之间的差异

Kri*_*hna 9 lifecycle jsf

我常常对这两个阶段产生怀疑.以下是我的理解:

  1. 应用请求值

    • 在此阶段,提交的值来自请求参数.然后将请求值设置到辅助bean中,即设置为组件UIInput
  2. 更新模型值

    • 在此阶段,已处理的值从backing bean(UIInput)传输到托管bean.(这是我们自定义的JSF bean).

我在想我的理解是正确的.但是,阅读一些文章让我感到困惑.我想在这两个阶段让我更清楚.请澄清我.

Bal*_*usC 19

应用请求值

  • 在此阶段,提交的值来自请求参数.然后将请求值设置到辅助bean中,即设置为组件UIInput

这不完全正确.这些值未设置到支持bean中.它们被设置为组件.基本上,UIInput组件树中的每个组件都会发生以下情况:

input.setSubmittedValue(request.getParameter(input.getClientId()));
Run Code Online (Sandbox Code Playgroud)

inputUIInputrequest现在HttpServletRequest.


更新模型值

  • 在此阶段,已处理的值从backing bean(UIInput)传输到托管bean.(这是我们自定义的JSF bean).

也不完全正确.UIInput组件不是支持bean.基本上,UIInput组件树中的每个组件都会发生以下情况:

bean.setProperty(input.getValue());
Run Code Online (Sandbox Code Playgroud)

这里,bean和property基于输入的valuebinding,例如value="#{bean.property}".


总而言之,您的困惑显然​​是区分JSF组件树,JSF支持bean和JSF托管bean.JSF组件树是您在JSP/Facelets页面中定义的树,您可以通过它获取FacesContext#getViewRoot().JSF支持bean是Javabean类,其属性使用EL绑定到组件树,例如#{bean.property}.JSF托管bean是那些Javabean类的具体实例.它们可以是请求,会话或应用程序作用域(在JSF 2.0中也可以查看作用域).它是托管bean,其中实际设置和检索了值.

也可以看看

  • @Krishna:好的,你认为现在更有意义吗?顺便说一句,@ Bozho在某个地方是公平的.只是一直称它们为托管bean.这完全有效. (2认同)