我正在使用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上。
答案 0 :(得分:0)
只需将onclick="event.stopPropagation()"
添加到h:selectOneMenu
,即可阻止点击事件到达标签。
(那说明为什么你需要在标题页中选择一个?它是一个导航元素。)