选项卡标题内的JSF下拉列表

时间:2017-10-13 16:20:38

标签: jsf drop-down-menu jsf-2 richfaces tabpanel

我正在使用JSF和富脸4.5.5,我试图在标签面板的标题中显示下拉列表。到目前为止,这就是我所拥有的:

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

显示正常。我在左侧显示了下拉箭头,并在每个标签页眉的右侧显示了选项卡的名称。然而,事件处理是狡猾的。当我单击下拉列表时,一旦我释放按钮,列表就会打开和关闭(阻止我在列表中进行选择)。为了从下拉列表中选择任何内容,我必须按住鼠标按钮并将其释放到标题区域之外,以便列表不会关闭。只有这样我才能在下拉区域中选择我的选项。 我相信标签页面正在抓取释放按钮事件,并在需要时使用它来更改标签(这看起来很明显)。

我想要的是下拉菜单优先于标签页眉。无论如何这样做? 或者,是否有一种方法可以在拖放时打开下拉列表?

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

由于 W上。

1 个答案:

答案 0 :(得分:0)

只需将onclick="event.stopPropagation()"添加到h:selectOneMenu,即可阻止点击事件到达标签。

(那说明为什么你需要在标题页中选择一个?它是一个导航元素。)