组件的生命周期是什么?遍历UIInput
来源我已经注意到有value
的本地字段,它本身就是组件的价值。我还注意到,在处理完所有转换和验证后,我们将新值与组件的旧值进行比较,以及它们是否具有不同的fire valueChange事件。实际上,这是接管quing事件的代码片段:
if (isValid()) {
Object previous = getValue();
setValue(newValue);
setSubmittedValue(null);
if (compareValues(previous, newValue)) {
queueEvent(new ValueChangeEvent(this, previous, newValue)); // <-----
}
}
但是如果组件在任何请求之后被杀死,我们只需要{i}}时间来发送请求。因此,我假设组件的生命周期与绑定到该属性的组件的生命周期相同。但我找不到任何文件保证......
答案 0 :(得分:1)
组件实例是请求范围的。只有委派给UIComponent#getStateHelper()
的组件属性才是视图范围。即它们保存在JSF视图状态中。其中包括getValue()
委托的ValueHolder#getLocalValue()
。
@Override
public Object getValue() {
return isLocalValueSet() ? getLocalValue() : super.getValue();
}
仅在无状态视图(即具有<f:view transient="true">
的页面)上,您所描述的行为&#34;我们只需获得ValueChangeEvent时间即可发送请求&#34; 确实会发生。