在我的JSF應用程序的頁面模板中,我使用ui:repeat
來遍歷一些數據來構建HTML表格。我想爲此使用基本的HTML標籤,而不是像h:dataTable
這樣的東西,因爲當我嘗試將某些樣式和JavaScript事件應用於該標籤時,它們沒有出現在正確的元素上。但是,當使用ui:repeat
達到此目的時,我發現它會在不適當的地方添加無效的tr
和td
以打開結束標記。爲什麼JSF的UI:重複添加無效標籤到我的HTML?
頁面模板,具有類似下面的代碼:
<table border="1" style="width: 100%;">
<ui:repeat var="row" value="#{bean.testData}">
<tr>
<ui:repeat var="column" value="#{bean.testData}">
<td>#{row}, #{column}</td>
</ui:repeat>
</tr>
</ui:repeat>
</table>
其實我想要做的事比這更復雜,但是這是問題的最簡單的例子。
Bean包含:
private final String[] testData = {"fu", "bar"};
public String[] getTestData() {
return this.testData;
}
的這個輸出是:
<table border="1" style="width: 100%;"></td>
</tr>
<tr>
<td>
<tr>
<td>fu, fu</td>
<td>fu, bar</td>
</tr>
<tr>
<td>bar, fu</td>
<td>bar, bar</td>
</tr></td>
</tr>
<tr>
<td>
</table>
我預期的輸出,怎麼會是:
<table border="1" style="width: 100%;">
<tr>
<td>fu, fu</td>
<td>fu, bar</td>
</tr>
<tr>
<td>bar, fu</td>
<td>bar, bar</td>
</tr>
</table>
我想不出爲什麼JSF在ui:repeat
循環輸出的開頭和結尾添加了這個:
</td>
</tr>
<tr>
<td>
在Google Chrome和Firefox中,這會導致在表格頂部和底部包含單個空單元的額外行。
有關如何防止這種情況的任何想法?
更新:我沒有想到提及我生成的這個表格會出現在h:panelGrid
元素內。我不知道這是否會對這個問題產生影響。
測試,在我的身邊工作正常(鑽嘴魚科2.1.14)。 –