在PrimeFaces& amp;上进行动态表格内容的挣扎数据表。 目标是呈现表格列标题&内容动态。
这是我的bean代码:
@ManagedBean(name="treeBean")
@SessionScoped
public class TreeBean implements Serializable {
private static Logger log = Logger.getLogger(TreeBean.class);
private static final long serialVersionUID = 1L;
private List<TableColHeader> tableColHeaderList;
/** Project-specific data structure. One list entry per one table row, Integer in Map is number of column */
private List<Map<Integer,String>> tableContent;
public TreeBean() {
tableColHeaderList=MockedDataProvider.getDemo1ColHeaderList();
tableContent=MockedDataProvider.getDemo1TableContent();
log.info("TreeBean started");
}
public int getTableColHeaderIndex(TableColHeader tableColHeader) {
return tableColHeaderList.indexOf(tableColHeader);
}
public List<TableColHeader> getTableColHeaderList() {
return tableColHeaderList;
}
public void setTableColHeaderList(List<TableColHeader> tableColHeaderList) {
this.tableColHeaderList = tableColHeaderList;
}
public List<Map<Integer,String>> getTableContent() {
return tableContent;
}
public void setTableContent(List<Map<Integer,String>> tableContent) {
this.tableContent = tableContent;
}
public List<Integer> getTableContentIdKeysAsList(int id){
return new ArrayList<Integer>(tableContent.get(id).keySet());
}
}
TableColHeader.java - 作为模型:
public class TableColHeader {
private String propertyUri;
private String label;
private String unitLabel;
private String unitUri;
//getters,setters,equals,hashCode..
}
这是我的JSF页面dataTable代码:
<p:dataTable id="queryResults" var="tableContentVar" value="#{treeBean.tableContent}">
<p:columns value="#{tableBean.tableColHeaderList}" var="column" >
<f:facet name="header">
#{column.label}
</f:facet>
<h:outputText value="#{tableContentVar.values().toArray()[treeBean.getTableColHeaderIndex(column)]}" />
</p:columns>
</p:dataTable>
我已经将空columnIndexVar值的问题读作https://code.google.com/p/primefaces/issues/detail?id=4449,但从bean获取索引也无济于事。
我只是在dataTable所在的地方看不到任何内容,也没有例外。 有什么想法吗?
使用Primefaces 3.5&amp; JBoss 7.1.1.Final。
答案 0 :(得分:0)
感谢@partlov,这里错误的是引用了tableBean
而不是JSF代码中的treeBean
。
所以这是工作代码:
<p:dataTable id="queryResults" var="tableContentVar" value="#{treeBean.tableContent}" >
<p:columns value="#{treeBean.tableColHeaderList}" var="column" >
<f:facet name="header">
#{column.label}
</f:facet>
<h:outputText value="#{tableContentVar.values().toArray()[treeBean.getTableColHeaderIndex(column)]}" />
</p:columns>
</p:dataTable>