0

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

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

页面 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)中读取并显示在浏览器中???

从 Balusc 帖子 - http://balusc.blogspot.in/2006/09/debug-jsf-lifecycle.html,我在 RenderResponse 中看到“要显示的值是从支持 bean 中的值绑定获取器中检索的”表示这些值是从 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}" />
4

0 回答 0