2011-02-05 15 views
2

ように私は、データテーブルを持っている:結果リストに要素がない場合は、テーブルのTBODYが空になるJSF:どのように空の行を:dataTableに追加しますか?

<h:dataTable id="box-score-away" value="#{individualAwayBoxScoreQuery.resultList}" var="_bssl"> 
    <f:facet name="header"> 
    <h:outputText value="Away Team" /> 
    </f:facet> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Name" /> 
    </f:facet> 
    <h:outputText value="#{_bssl.name}" /> 
    <f:facet name="footer"> 
     <h:outputText value="&#931;" styleClass="bold" /> 
    </f:facet> 
    </h:column> 
    ... 
</h:dataTable> 

。 Firefoxには問題があり、ページのレンダリングは本当にうんざりです。

結果リストが空のときにtbodyに行を追加するにはどうすればよいですか? (条件についてではなく、使用するコンポーネントと配置する場所であることに注意してください。)

行は10のcolspanのtdであるはずです。成功しなかったいくつかのことを試しました。 f:逐語的に行く方法ですか?

答えて

2
#{individualAwayBoxScoreQuery.resultList} 

これはモデルで処理できます。 1つの空のビーンを含むListを条件付きで返します(私はMapでもそうです)。これを行うにはいくつかの方法があります。 EL機能;

メモリサーバーの場合、MyFacesはこれを自動的に実行して、有効なXHTMLを生成します。

+0

私は、10のcolspanを持つtdタグを生成するソリューションを探していました。ダミーのリスト要素はうまく動作しません。 – Kawu

+0

@ Kawu - デフォルトのテーブルレンダラーはこれを行いません。私はテーブルに 'renderered'属性を入れて、条件付きでテーブルや空の擬似文字をレンダリングすることができると思います。私はあなたもJavaScriptでそれを行うことができると思います。 – McDowell

3

私は同様の問題を抱えていました。テーブル本体に<tr>を追加するためにdojoを使用しました。例えば

それは以下のようになります上:

dojo.addOnLoad(function(){ 

if(dojo.isMozilla) { 
    var bodyElem = dojo.query(".yourTablesStyleClass tbody")[0]; 

    dojo.create("tr", null, bodyElem, "last"); 

} }); 
0

をクラスに空の豆を追加し、conditionlly列をレンダリングするには、テーブルの下に空の行を作成するために私を助けました。

 add a new boolean to the bean say dummyRow 
     then set bean.setName(".") 
       bean.setDummyRow(true); 
     resultList.add(bean) 

    Now in the jsp you need to chang like this 
    <h:outputText value="#{_bssl.name}" rendered="{!_bssl.dummyRow}"/> 

これにより、問題が解決されるように、空の行を下に作成することができます。私の問題は水平スクロールバーのため、一番下の行を表示できませんでした。

関連する問題