2013-03-14 4 views
3

PrimeFaces의 동적 테이블 내용으로 고민 & dataTable. 목표는 표 열 머리글 &을 동적으로 렌더링하는 것입니다. 나는했습니다JSF PrimeFaces 동적 데이터 테이블

<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> 

:

public class TableColHeader { 
    private String propertyUri; 
    private String label; 
    private String unitLabel; 
    private String unitUri; 
//getters,setters,equals,hashCode.. 
} 

그리고 여기 내 JSF 페이지 DataTable의 코드입니다 : - 모델로

@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 : 여기

내 빈 코드 빈 columnIndexVar 값을 가진 문제에 대해 https://code.google.com/p/primefaces/issues/detail?id=4449으로 읽으십시오. 그러나 빈에서 색인을 얻는 것도 도움이되지 않습니다.

나는 dataTable이 있어야하는 곳과 예외가없는 곳을 보지 않았습니다. 아이디어가 있습니까?

프라임 스 페이스 사용 3.5 & JBoss 7.1.1. 최종.

+1

을 정의? – ClydeFrog

+0

@Sergii'tableContentVar'를 써야합니까? – partlov

+0

고맙습니다. 지금 당장 확인하고 있습니다 .. – Sergii

답변

0

@partlov 덕분에 잘못된 것은 JSF 코드에서 treeBean 대신 tableBean을 참조했습니다. 그래서 여기

노력 코드 :`tableContentMap`와`tableContentVar`이

<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>