JSF2-AJAX环境中未更新“值”

时间:2012-08-26 15:07:36

标签: ajax jsf-2

我的环境:W7,Eclipse Indigo 3.7.2,Tomcat 6.0.35,jdk 1.7.02,jsf 2.0(Mojarra 2.03),JSTL 1.2。 尝试为更复杂的情况实现级联下拉列表,作为最终的试验,我编写了一个非常简单的xhmtl,它从selecOneMenu中选择一个项目,并通过f:ajax条目将其内容立即放入outputText中。菜单显示正确,但是,当我更改选择时,outputText没有任何反应。我无法弄清楚错误在哪里:你能帮帮我吗? 感谢。

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                                    
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                    

  <html xmlns="http://www.w3.org/1999/xhtml"                                                        
    xmlns:ui="http://java.sun.com/jsf/facelets"                                                     
    xmlns:h="http://java.sun.com/jsf/html"                                                          
    xmlns:f="http://java.sun.com/jsf/core"                                                          
    xmlns:p="http://primefaces.org/ui">                                                             


  <ui:composition template="/WEB-INF/template/BasicTemplate.xhtml">                                 
    <ui:define name="content">                                                                      
        <f:view>                                                                                      
        <h:form>                                                                                      
            <h:selectOneMenu id="firstDropDown" value="#{twoMenusBean.first}" style="width: 110px; ">   
                    <f:selectItems value="#{twoMenusBean.items}" />                                         
                    <f:ajax render="secondDropDown" immediate="true" ></f:ajax>                             
            </h:selectOneMenu>                                                                          


                <h:outputText id="secondDropDown" value="#{twoMenusBean.first}" ></h:outputText>          

            </h:form>                                                                                   
        </f:view>                                                                                     
    </ui:define>                                                                                    
  </ui:composition>                                                                                 
  </html>                                                                                           

豆子:

package myJava;




  @ManagedBean (name="twoMenusBean")                                   
  @SessionScoped                                                       

  public class twoMenusBean  {                                         

    private List<String> menu1List = new ArrayList<String>();          
    private String first;                                              

    public  twoMenusBean(){                                            

            menu1List.add("item 1");                                       
            menu1List.add("item 2");                                       
            first ="item 1";                                               
    }                                                                  
    public String getFirst(){                                          
        return first;                                                    
    }                                                                  
    public void setFirst(String first){                                
        this.first = first;                                              
    }                                                                  

    public List<SelectItem> getItems(){                                
        List<SelectItem> x = new ArrayList<SelectItem>();                
        for (int i = 0; i < menu1List.size() ;i++) {                     
            x.add(new SelectItem(menu1List.get(i),menu1List.get(i)));      
        }                                                                
        return x;                                                        
    }                                                                  
  }                                                                    

1 个答案:

答案 0 :(得分:0)

删除immediate="true":它具有跳过字段更新的副作用(setFirst将不会被调用)。