为什么datatable会为我的表添加更多内容

时间:2013-04-18 15:08:09

标签: java jsf

这是我的jsf:

 <h:dataTable class="pretty" value="#{ftController.ftDataModel}" var="item">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Amount"/>
                        </f:facet>
                    </h:column>
                    <h:column >
                        <f:facet class="right" name="header">
                            <h:outputText value="Date"/>
                        </f:facet>
                    </h:column>
                    <h:column>      
                        <h:outputLink   value="index.jsf"><h:outputText value="#{item.ftType}"/></h:outputLink><br />
                          <h:outputText class="red" id="amount"   value="#{item.amount}"></h:outputText> <h:outputText value="&#160;" /><h:outputText  style="font-size:12px" class="gray" value="TL" />
                    </h:column>
                    <h:column class="right" >
                        <h:outputText id="date"    value="#{item.date}"></h:outputText> 
                    </h:column>
                </h:dataTable>

howerver,html输出就是这样:

<table class="pretty">
<thead>
<tr>
<th scope="col">Amount</th>
<th scope="col">Date</th>
<th scope="col"></th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td></td>
<td><a href="index.jsf" class="ui-link">Person</a><br><span id="j_idt8:j_idt21:0:amount" class="red">34500.6</span>&nbsp;<span class="gray" style="font-size:12px">TL</span></td>
<td><span id="j_idt8:j_idt21:0:date">10/14/2012</span></td>
</tr>
<tr>
<td></td>
<td></td>
<td><a href="index.jsf" class="ui-link">Person</a><br><span id="j_idt8:j_idt21:1:amount" class="red">3444.78</span>&nbsp;<span class="gray" style="font-size:12px">TL</span></td>
<td><span id="j_idt8:j_idt21:1:date">10/15/2012</span></td>
</tr>
</tbody>
</table>

它在金额和日期下为ex添加了额外的<th>。它还增加<td>s为什么?这里有什么问题?我怎么解决呢?为什么要添加?

2 个答案:

答案 0 :(得分:1)

只需将<f:facet> 中的<h:column>与行数据嵌套在一起<​​/ strong>即可。您在代码中为JSF提供的是创建4列,其中前两列将具有空行数据和已定义的标题文本,以下两列将使所有内容都反转。解决它:

            <h:dataTable class="pretty" value="#{ftController.ftDataModel}" var="item">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Amount"/>
                    </f:facet>
                    <h:outputLink   value="index.jsf"><h:outputText value="#{item.ftType}"/></h:outputLink><br />
                      <h:outputText class="red" id="amount"   value="#{item.amount}"></h:outputText> <h:outputText value="&#160;" /><h:outputText  style="font-size:12px" class="gray" value="TL" />
                </h:column>
                <h:column >
                    <f:facet class="right" name="header">
                        <h:outputText value="Date"/>
                    </f:facet>
                    <h:outputText id="date"    value="#{item.date}"></h:outputText> 
                </h:column>
            </h:dataTable>

答案 1 :(得分:0)

这是因为您的数据表中有4个<h:column>。第3和第4个没有名称属性,所以它是空白的。