2015-06-14 91 views
0

我想顯示基於h:selectOneMenu選定值的div圖層。我的CR基於h渲染:selectOneMenu值

eated this code: 

    <h:selectOneMenu id="zone" value="#{download.zone}" style="width: 212px;"> 
     <f:selectItem id="select" itemLabel="Select download mirror" itemValue="Select download mirror" /> 
     <f:selectItem id="USA" itemLabel="USA" itemValue="USA" /> 
     <f:selectItem id="Canada" itemLabel="Canada" itemValue="Canada" /> 
    </h:selectOneMenu> 

... 

private String zone; 

    public String getZone() 
    { 
     return zone; 
    } 

    public void setZone(String zone) 
    { 
     this.zone = zone; 
    } 

這就是我想基於值顯示div層:

<div id="usa_release_server" style="padding-top: 20px;" class="text" rendered="#{download.zone == 'USA'}"> 
           <h6>USA release server</h6> 
</div> 

但當h選擇值:selectOneMenu用於什麼也沒有發生。你知道我錯過了什麼嗎?

回答

1

rendered不是一個有效的HTML屬性,它必須在JSF標籤上使用。在這裏,你可以使用一個<h:panelGroup>組件與layout="block"這會使一個<div>,並添加AJAX組件來更新它<h:selectOneMenu>變化:

<h:form> 
    <h:panelGroup layout="block" id="usa_release_server" 
     style="padding-top: 20px;" styleClass="text" 
     rendered="#{download.zone eq 'USA'}"> 
     <h6>USA release server</h6> 
    </h:panelGroup> 
    <h:selectOneMenu id="zone" value="#{download.zone}" 
     style="width: 212px;"> 
     <f:selectItem id="select" itemLabel="Select download mirror" 
      itemValue="Select download mirror" /> 
     <f:selectItem id="USA" itemLabel="USA" itemValue="USA" /> 
     <f:selectItem id="Canada" itemLabel="Canada" itemValue="Canada" /> 
     <f:ajax event="change" render="@form" /> 
    </h:selectOneMenu> 
</h:form> 
+0

出於某種原因,代碼示例無法正常工作。 h:我選擇美國時panelGroup不可見。也許我需要把組件變成形式? –

+0

是的,你必須 – Zim

+0

我實現了代碼,但我注意到一個非常小的問題。當我從列表中選擇美國時,有一個AJAX呼叫2-3秒。有沒有辦法跳過這一次? –