Html JSF h:dataTable在没有记录时创建单个空单元格

Html JSF h:dataTable在没有记录时创建单个空单元格,html,jsf,datatable,Html,Jsf,Datatable,当支持值为空时,是否有任何方法防止h:datatable创建空行? 更具体地说: 我有一个数据集合,在一个带有列标题的h:dataTable中显示在3列中。无论列表中是否有元素,始终需要显示thead。这很好,但是当列表中没有元素时,将在tbody中创建一个空行/单元格。有没有办法防止这种情况 谢谢 来自支持bean的示例方法。对于测试,我尝试返回null或空列表。两者的结果相同 public List<LocationsDecorator> getLocations() {

当支持值为空时,是否有任何方法防止h:datatable创建空行? 更具体地说: 我有一个数据集合,在一个带有列标题的h:dataTable中显示在3列中。无论列表中是否有元素,始终需要显示thead。这很好,但是当列表中没有元素时,将在tbody中创建一个空行/单元格。有没有办法防止这种情况

谢谢

来自支持bean的示例方法。对于测试,我尝试返回null或空列表。两者的结果相同

    public List<LocationsDecorator> getLocations() {
    return null;
}
公共列表getLocations(){
返回null;
}
JSF片段:

<h:dataTable styleClass="locations" id="locations1"
    var="nearestLoc" value="#{confirmationBean.locations}">
    <h:column>
        <!-- column header -->
        <f:facet name="header">Address</f:facet>
        <!-- row record -->
            #{nearestLoc.adddress}
        </h:column>
    <h:column>
        <!-- column header -->
        <f:facet name="header">Distance</f:facet>
        <!-- row record -->
            #{nearestLoc.distance}
        </h:column>
    <h:column>
        <!-- column header -->
        <f:facet name="header">Hours of Operation</f:facet>
        <!-- row record -->
        <h:dataTable styleClass="locations" var="data"
            value="#{nearestLoc.hoursOfOperation}">
            <h:column>     
                #{data}
                </h:column>
        </h:dataTable>

    </h:column>

</h:dataTable>

地址
#{nearestLoc.adddress}
距离
#{nearestLoc.distance}
营业时间
#{data}
生成的HTML(问题在于tbody中的“
”):


地址
距离
营业时间

如果改为将方法包装在outputText标记中,则可以避免列标题消失

例如:

  <h:column>
    <!-- column header -->
    <f:facet name="header">Address</f:facet>
    <!-- row record -->
       <h:outputText value="#{nearestLoc.adddress}" />
    </h:column>

地址

这样,列本身就不依赖于值

为空表指定单独的样式。例如

table.empty tbody td {
    border: 0;
}
并有条件地添加它

<h:dataTable ... styleClass="locations #{empty component.value ? 'empty' : ''}">

谢谢巴卢斯克的建议,但我试过了,没用。这可能是其他原因造成的。我稍微修改了BalusC的代码,现在可以工作了:

table.locations.empty tbody td {
    border-color: rgba(0, 0, 0, 0);
}

你忘了描述为什么这是个问题,因此,不可能提出解决问题的答案。在表格单元格中应用边框或bkgnd颜色等样式时会导致问题。我能在某处找到一个这样的示例吗?@sans:根据目前提供的信息创建您自己。您可以对现有答案提出增强建议。如果出现问题,则会失败更强的CSS选择器,用于指定边框。这一部分与JSF无关,只是与基本CSS有关。
table.locations.empty tbody td {
    border-color: rgba(0, 0, 0, 0);
}