2017-10-13 5 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

h:selectOneMenuonclick="event.stopPropagation()"を追加するだけで、クリックイベントがタブに届かないようになります。 (なぜあなたはタブヘッダー内の選択が必要なのでしょうか?それは、ナビゲーション要素だと述べている。)

+0

ジーはMakhielは、あなたが私の一日保存した多くの感謝

! :-) – willix

+0

また、onclickイベントハンドラを追加し、ajax呼び出しでコンテンツとヘッダを強制的にリフレッシュして、魅力を発揮します。 willix

+0

あなたの質問に答えるために、タブの選択は、いくつかのカテゴリの文書を選択する方法です。 タブはドキュメントのカテゴリまたはグループを表し、各選択はそのグループのドキュメントを表示します。 私の場合、各タブは特定の種類のドキュメントであり、selectは指定された言語でtanslatedされたドキュメントです。 Im Uxのエキスパート(そしてこのプロジェクトでは1つは持っていました)が、これはプロジェクトのオーナーがどのように表示したいのですか? – willix

関連する問題