基于h:selectOneMenu值进行渲染

时间:2015-06-14 12:03:56

标签: jsf jsf-2.2

我想根据h:selectOneMenu选择值显示div图层。我知道

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 个答案:

答案 0 :(得分:2)

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>