Jsf 基于h:SelectOne菜单值进行渲染

Jsf 基于h:SelectOne菜单值进行渲染,jsf,jsf-2.2,Jsf,Jsf 2.2,我想根据h:selectOneMenu selected值显示div层。I cr 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"

我想根据h:selectOneMenu selected值显示div层。I cr

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;
    }
此代码:
...
私有字符串区;
公共字符串getZone()
{
回流区;
}
公共无效设置区域(字符串区域)
{
这个区域=区域;
}
这是我要基于值显示的div层:

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

美国发布服务器

但当在h:SelectOne菜单中选择值时,什么也不会发生。你知道我遗漏了什么吗?

呈现的
不是有效的HTML属性,它必须用于JSF标记。在这里,您可以将
组件与
layout=“block”
一起使用,该组件将呈现
,并添加一个ajax组件以在
更改时对其进行更新:

<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>

美国发布服务器

由于某些原因,代码示例不起作用。h:panelGroup在我选择美国时不可见。也许我需要将组件放入表单中?我实现了代码,但我注意到一个非常小的问题。当我从列表中选择USA时,会有2-3秒的AJAX调用。有没有办法跳过这次?我编辑了我的代码,在尝试更新未呈现的组件时犯了一个小错误。我是否可以在不使用AJAX调用的情况下呈现h:selectOneMenu?是的,使用纯Javascript,但AJAX调用不应花费2-3秒,除非您的视图中有数千个组件。。。