Valuechange侦听器未反映更新的值 - RenderResonse阶段

时间:2013-11-10 09:04:29

标签: jsf-2 valuechangelistener

我有两个关于ValueChange监听器和Renderresponse阶段的问题。

  1. valueChangelistener未反映以下代码中更新的值。

      

  2. 页面bean代码:

        public void changeListernMethod(ValueChangeEvent e) {
           setUpdatedCountry("You selected " + e.getNewValue().toString());
           FacesContext.getCurrentInstance().renderResponse();        
        }
    

    在valuechange方法中添加了一行以跳转到渲染响应阶段,因为在PROCESS VALIDATION阶段调用了Valuechange方法,UPDATE MODEL阶段将覆盖valuechange事件方法中设置的任何值。

     FacesContext.getCurrentInstance().renderResponse();
    

    但是,如果在下拉列表中选择了任何值,则文本框不会反映所选值。我知道这与生命周期有关,但无法弄清楚它是什么。

    1. 在渲染阶段,组件的值从ManagedPageBean或组件树(UIViewRoot)读取并显示在浏览器中???
    2. 从BaluSc post-http://balusc.blogspot.in/2006/09/debug-jsf-lifecycle.html,我看到RenderResponse中的“要显示的值是从支持bean中的值绑定getter中检索的”,这意味着从bean读取值。如果是这样,值如何/何时更新为UIRootView以恢复视图以回发请求。

      下面的xhtml代码......

       <h:selectOneMenu value="#{changeListenerBean.country}" onchange="submit()"            
      valueChangeListener="#changeListenerBean.changeListernMethod}" >
                          <f:selectItems value="#{changeListenerBean.countries}" />
                      </h:selectOneMenu>
          <h:inputText value="#{changeListenerBean.updatedCountry}" />
      

0 个答案:

没有答案