2017-10-13 61 views
0

我正在使用JSF和豐富的面孔4.5.5,我試圖在標籤面板的頁眉中顯示下拉列表。到目前爲止,這是我有:標籤頁眉內的JSF下拉列表

<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

只需將onclick="event.stopPropagation()"添加到h:selectOneMenu即可防止點擊事件到達選項卡。

(也就是說你爲什麼需要在標籤頭一個選擇?這是一個導航元素。)

+0

哎呀千恩萬謝Makhiel,你救了我的天! :-) – willix

+0

我還添加了一個onclick事件處理程序,並強制使用ajax調用刷新內容和標題,並且它的作用非常強大 willix

+0

要回答您的問題,選項卡中的選擇是一種選擇多個類別中的文檔的方法。 選項卡代表類別或文檔組,每個選項都顯示該組中的文檔。 就我而言,每個選項卡都是特定類型的文檔,select是以給定語言翻譯的文檔。 我不是Ux專家(我們在這個項目上有一個專家),但這是項目所有者希望它展示的方式! – willix