Jsf 应用请求值和更新模型值之间的差异
我经常对这两个阶段产生怀疑。以下是我的理解:Jsf 应用请求值和更新模型值之间的差异,jsf,lifecycle,Jsf,Lifecycle,我经常对这两个阶段产生怀疑。以下是我的理解: 应用请求值 在此阶段,提交的值来自请求参数。然后将请求值设置到backingbean中,即设置为组件UIInput 更新模型值 在此阶段,处理后的值从支持bean(UIInput)传输到托管bean。(这是我们自定义的JSFbean) 我认为我的理解是正确的。但是,读了几篇文章让我感到困惑。我想更清楚地说明这两个阶段。请澄清 应用请求值 在此阶段,提交的值来自请求参数。然后将请求值设置到backingbean中,即设置为组件UIInput
- 在此阶段,提交的值来自请求参数。然后将请求值设置到backingbean中,即设置为组件UIInput
- 在此阶段,处理后的值从支持bean(UIInput)传输到托管bean。(这是我们自定义的JSFbean)
- 在此阶段,提交的值来自请求参数。然后将请求值设置到backingbean中,即设置为组件UIInput
UIInput
组件,基本上会发生以下情况:
input.setSubmittedValue(request.getParameter(input.getClientId()));
bean.setProperty(input.getValue());
这里的输入
是,而请求
是
更新模型值
- 在此阶段,处理后的值从支持bean(UIInput)传输到托管bean。(这是我们自定义的JSFbean)
UIInput
组件,基本上会发生以下情况:
input.setSubmittedValue(request.getParameter(input.getClientId()));
bean.setProperty(input.getValue());
这里,bean和属性基于输入的valuebinding,例如value=“#{bean.property}”
总之,在区分JSF组件树、JSF支持bean和JSF管理bean时,您的困惑是显而易见的。JSF组件树是您在JSP/Facelets页面中定义的,您可以通过以下方式获得。JSF支持bean是Javabean类,其属性使用EL绑定到组件树,如
{bean.property}
。JSF托管bean是这些Javabean类的具体实例。它们可以是请求范围、会话范围或应用程序范围(在JSF2.0中也可以是视图范围)。它是实际设置和检索值的托管bean
另见
UIComponent
。更重要的是,这一点都不是必需的(甚至连链接的调试JSF生命周期文章都解释了那些UIComponent
绑定仅用于纯粹的演示目的,在现实世界中,只要您想对它们做更多的事,而不仅仅是获取/设置值,就应该使用它们)。我本人不同意波佐的回答,这确实是误导。支持bean和托管bean之间的区别最好在这一行代码中进行总结:BackingBean managedBean=newbackingbean()代码>@Krishna:它们看起来确实一样。支持bean是绑定到JSF视图(即支持视图)的bean的(抽象)类定义。类路径中只有一个。托管bean是由JSF创建并放入范围的具体实例(即,由JSF管理)。克里希纳:好吧,你现在认为什么更有意义@顺便说一下,波佐在某个地方有一个公平的观点。一直叫他们托管豆子。这是完全正确的。