我想动态地为每个列创建具有列名的primefaces PanelGrid。
我的代码如下所示:
private void setPanelGridHeader(PanelGrid grid, String[] columnNames) {
Row row = null;
Column col = null;
String columnName = null;
OutputLabel label = null;
grid.setColumns(columnNames.length);
row = new Row();
for (int i = 0; i < columnNames.length; i++) {
columnName = columnNames[i];
label = new OutputLabel();
label.setValue(columnName);
col = new Column();
row.getChildren().add(col);
col.getChildren().add(label);
}
grid.getFacets().put("header", row);
}
如果添加单个组件HtmlOutputText,它可以正常工作,但是当我尝试添加行和列时,只会创建一个小的空行。
预期输出为:
<f:facet name="header">
<p:row>
<p:column> A </p:column>
<p:column> B </p:column>
<p:column> . </p:column>
<p:column> . </p:column>
</p:row>
</f:facet>
我做错了什么?还有其他选择吗?
我刚刚发现使用primefaces 5.1甚至facelets也没有按预期工作:
<p:panelGrid columns="2">
<f:facet name="header">
<p:row>
<p:column > A </p:column>
<p:column > BBBBB </p:column>
</p:row>
</f:facet>
<h:outputText value="aaaaa" />
<h:outputText value="b" />
</p:panelGrid>
产生(预期是注释):
<thead class="ui-panelgrid-header">
<tr class="ui-widget-header" role="row">
<td colspan="2" role="columnheader">A BBBBB</td>
<!-- EXPECTED TWOCOLUMN HEADER ------------------<<<<<<<<
<td role="columnheader">A</td>
<td role="columnheader">BBBBB</td>
-->
</tr>
</thead>
<tbody>
<tr class="ui-widget-content" role="row">
<td role="gridcell" class="ui-panelgrid-cell">aaaaa</td>
<td role="gridcell" class="ui-panelgrid-cell">b</td>
</tr>
</tbody>
这可能是个错误。任何解决方法?