Primefaces 获取bean中的p:dataTable列名

Primefaces 获取bean中的p:dataTable列名,primefaces,primefaces-datatable,Primefaces,Primefaces Datatable,是否可以从数据表中获取列名作为可读字符串?我需要在我的LazyDataModel课上得到它们 这是我的数据表和列的图像 我实际上得到了列名数组,但是它们的类型如下 [org.primefaces.component.column.Column@1543c5e7, org.primefaces.component.column.Column@32434af6, org.primefaces.component.column.Column@6f84a39b, org.primefaces.c

是否可以从数据表中获取列名作为可读字符串?我需要在我的LazyDataModel课上得到它们

这是我的数据表和列的图像

我实际上得到了列名数组,但是它们的类型如下

[org.primefaces.component.column.Column@1543c5e7, 
org.primefaces.component.column.Column@32434af6, 
org.primefaces.component.column.Column@6f84a39b, 
org.primefaces.component.column.Column@6b30f4d2, 
org.primefaces.component.column.Column@605768ae, 
org.primefaces.component.column.Column@48eb8aa8, 
org.primefaces.component.column.Column@2b97055]

首先,您应该在列上使用
name
或至少
id
属性。 现在你可以这样做:

Snippet将打印所有列标题文本,但使用
ID
s您将能够以更好的方式获得它

DataTable dataTable = (DataTable) FacesContext.getCurrentInstance()
            .getViewRoot().findComponent("form:userTable");
List<UIColumn> column = dataTable.getColumns();
for (UIColumn uiColumn : column) {
    System.out.println(uiColumn.getHeaderText());  
}  
DataTable=(DataTable)FacesContext.getCurrentInstance()
.getViewRoot().findComponent(“表单:userTable”);
List column=dataTable.getColumns();
for(UIColumn UIColumn:column){
System.out.println(uiColumn.getHeaderText());
}  

只需将
name
或/和
id
添加到视图的每一列中,并显示打印姓名的代码即可。我添加了打印姓名的方式,现在我正尝试为他们命名@lenglboy您的问题是/是您获得了一个
列表
,并直接打印。因此,打印的“随机”数字是作为值的每列的实例ID。如果有一个循环的值实现,或者获取每个循环的headertext并将其打印出来,则需要使用一个带有
toString()
的循环。太好了!谢谢可以获取name或id属性而不是headerText吗@LenglBoyYes,看看对象的api
方法getHeader()对于UIColumn类型是未定义的
在我编写它时说的。我问是因为找不到getHeader方法@KukeltjeI导入导入org.primefaces.component.api.ui列;
[org.primefaces.component.column.Column@1543c5e7, 
org.primefaces.component.column.Column@32434af6, 
org.primefaces.component.column.Column@6f84a39b, 
org.primefaces.component.column.Column@6b30f4d2, 
org.primefaces.component.column.Column@605768ae, 
org.primefaces.component.column.Column@48eb8aa8, 
org.primefaces.component.column.Column@2b97055]
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance()
            .getViewRoot().findComponent("form:userTable");
List<UIColumn> column = dataTable.getColumns();
for (UIColumn uiColumn : column) {
    System.out.println(uiColumn.getHeaderText());  
}