2015-06-14 86 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秒。有没有办法跳过这一次? –