JSF - 关于生命周期的问题

时间:2010-11-27 17:12:41

标签: jsf jsf-2 page-lifecycle

我今天正在阅读关于JSF生命周期的article

我很难理解这些要点:

1 - 阶段3:流程验证 - 这是组件可以验证其新值的阶段。 如果新值有效且与先前值不同,则将创建值更改事件并将其放入队列中。因此,在我们的示例中,如果用户在提交表单之前更改了名称,则ValueChangeEvent对象将由UIInput组件对应于Name文本框创建,并在此阶段结束时排队等待处理。这是如何调用支持bean中的valueChangeInput方法。

JSF如何知道旧值和新值之间的区别? View对象的实例是2?前一个(请求前的那个)和新的? (其中包含最后一个进程添加的FacesContext上的值,应用请求值)

2 - 阶段5:调用应用程序 - 一旦将请求的所有值都成功设置到辅助bean,将处理在应用请求值阶段排队的操作事件。 在我们的例子中,提交按钮操作方法。

因此,它直接将FacesContext的实例发送到将UI元素(及其值)转换为Html的最后阶段(渲染响应)。那么,什么时候调用getter方法(bean的)?

干杯

1 个答案:

答案 0 :(得分:4)

  

JSF如何知道旧值和新值之间的区别? View对象的实例是2?前一个(请求前的那个)和新的? (其中包含最后一个进程添加的FacesContext上的值,应用请求值)

旧值是当前模型值。新值是提交的值。以下示例

<h:inputText value="#{bean.value}" />

JSF将基本执行以下操作(为简洁起见,省略了转换/验证):

Object oldValue = bean.getValue();
Object newValue = request.getParameter(clientId);
if (oldValue == null ? newValue != null : !oldValue.equals(newValue)) {
    // Create and queue ValueChangeEvent.
}

  

因此它直接将FacesContext的实例发送到将UI元素(及其值)转换为Html的最后阶段(渲染响应)。

不完全是这样,但是,当调用操作完成时,渲染响应将启动。


  

那么,什么时候调用getter方法(bean的)?

是的,只有当它们在视图中绑定时才会在渲染响应期间发生。

您可以找到here另一篇以更实际的方式解释JSF生命周期的文章。