JSF:如何向数据表添加空行?

3

我有一个如下的数据表:

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

当结果列表没有元素时,表格的tbody变为空。Firefox存在问题,页面渲染非常混乱。
当结果列表为空时,我应该如何向tbody添加一行?(注意,这不是关于条件而是关于使用哪些组件以及将它们放在哪里。)
该行应该是一个colspan为10的td。我尝试了一些方法但没有成功。f:verbatim是否是正确的方法?
3个回答

3
#{individualAwayBoxScoreQuery.resultList}

你可以在你的模型中处理这个。有条件地返回一个包含单个空bean的List(我猜一个Map也可以)。有几种方法可以做到这一点:在后端bean中;EL函数等等。
如果我的记忆没有出错,MyFaces会自动执行此操作以生成有效的XHTML。

嗯,我正在寻找一种解决方案,可以生成一个带有10个colspan的td标签。我猜一个虚拟列表元素行不通。 - Kawu
@Kawu - 默认的表格渲染器不会做到这一点;我猜你可以在表格上放一个renderered属性,有条件地渲染表格或一个虚拟的空白verbatim。我想你也可以用JavaScript来实现。 - McDowell

3
我有类似的问题,最后我使用dojo向表格主体添加了一个<tr>
对于上面的示例,可能看起来像下面这样:
dojo.addOnLoad(function(){

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

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

}  });

0
将空bean添加到类中并有条件地呈现列,这帮助我在表格底部创建了一个空行。
      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}"/>

通过这种方式,我能够在底部创建一个空行,从而解决我的问题。我的问题是由于水平滚动条而无法查看最底部的行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接