我有一个selectOneMenu,显示一些不同的东西类别:

<h:selectOneMenu value="#{searchController.selectedCategory}">
        <f:selectItems value="#{searchController.formatedCategories()}" >
        </f:selectItems>
    </h:selectOneMenu>


我需要根据所选类别显示不同的panelGroup。
示例(选择第一个项目时,需要显示该项目)

<h:panelGroup id="carInfo">
        <h:outputText value="marka" />
        <h:selectOneMenu>
            <f:selectItems value="#{searchController.formatedCarMarks()}" />
        </h:selectOneMenu>
        <h:outputText value="godina" />
        <h:selectOneMenu>
            <f:selectItems value="#{searchController.formatedYearFrom()}" />
        </h:selectOneMenu>
        <h:selectOneMenu>
            <f:selectItems value="#{searchController.formatedYearTo()}" />
        </h:selectOneMenu>
        <h:outputText value="kms.:" />
        <h:selectOneMenu>
            <f:selectItems value="#{searchController.kmsFrom()}" />
        </h:selectOneMenu>
        <h:selectOneMenu>
            <f:selectItems value="#{searchController.kmsTo()}" />
        </h:selectOneMenu>
    </h:panelGroup>


我不知道该怎么做,因为我需要在不刷新页面的情况下进行操作。
有任何想法吗? Ajax可以在这里帮助我吗?如果可以的话,有人可以告诉我如何?我一点都不熟悉。

最佳答案

这可以通过ajax轻松完成:


<h:panelGroup>元素放入外部<h:panelGroup>
<f:ajax>嵌套在<h:selectOneMenu>内,并将外部<h:panelGroup>的ID放入其render属性中。
为每个内部<h:panelGroup>元素提供一个rendered属性,该属性仅在选择了相应类别时才为true。

10-08 01:26