选项卡内的 JSF 下拉列表 header

JSF dropdown list inside a tab header

我正在使用 JSF 和 rich faces 4.5.5,我正试图在选项卡面板的 header 中显示下拉菜单。到目前为止,这就是我所拥有的:

<rich:tabPanel id="reportTabPanel" >
    <a4j:repeat var="reportCategory" value="${workBean.categories}">
        <rich:tab>
            <f:facet name="header">
                <h:panelGroup>                   
                    <h:selectOneMenu value="#{reportCategory.currentSelection}" style="background:none;border:none;width:15px">
                        <f:selectItems value="#{reportCategory.availableReports}" />
                    </h:selectOneMenu>

                    <h:outputText  value="#{reportCategory.displayedTitle}" />                          
                </h:panelGroup>
            </f:facet>

            <div id="reportContent" name="content" >
                <h:outputText value="#{reportCategory.displayedContent}" escape="false" />
            </div>              
        </rich:tab>
    </a4j:repeat>
</rich:tabPanel>

显示正常。我在左侧显示 drop-down 箭头,在每个选项卡的右侧显示选项卡名称 header。然而,事件处理是狡猾的。当我单击下拉菜单时,列表会在我松开按钮后立即打开和关闭(防止我在列表中创建 selection)。为了 select 下拉列表中的任何内容,我必须按住鼠标按钮并在 header 区域外释放它,这样列表就不会关闭。只有这样我才能在下拉区域中 select 我的选项。 我相信选项卡 header 正在获取释放按钮事件并在需要时使用它来更改选项卡(这看起来很明显)。

我想要的是下拉列表优先于选项卡 header。无论如何这样做? 或者,有没有办法在鼠标悬停时打开下拉菜单?

我不是 JSF 的专家。我试过查看实现自定义渲染器,但我的问题更多地与事件有关,而不是视觉,所以不确定这是正确的方法。有什么建议吗?指针?

谢谢 w。

只需将 onclick="event.stopPropagation()" 添加到 h:selectOneMenu,这将阻止点击事件到达选项卡。

(就是说为什么在选项卡 header 中需要一个 select?它是一个导航元素。)