2014-11-25 7 views
0

저는 Wicket을 처음 사용하고 있으며, 개찰구에 순전히 동적 인 내용을 추가하려고합니다. String tableName과 columnNamesAndValues ​​(columnName 및 해당 값 포함)가있는 TableDataValuesVO 개체의 목록이 있습니다. 목록의 각 오브젝트는 서로 다른 테이블의 서로 다른 데이터 레코드를 나타냅니다 (각 오브젝트에 대해 columnNameAndValues의 크기가 다름). 현재 columnName과 Value에 대해 repeatingview를 사용하고 있습니다. 그러나 행당 하나의 columnName과 행당 하나의 columnValue를 표시합니다.
HTML : :Wicket에서 중계기를 사용하여 동적 컨텐츠를 표 형식으로 추가하는 방법

<table wicket:id="applicationDataView"> 

자바 :

boolean columnNameRendered = false; 
applicationDataView = new RepeatingView("applicationDataView") 
RepeatingView tableView = new RepeatingView(applicationDataView.newChildId()); 
RepeatingView columnNameView = new RepeatingView(applicationDataView.newChildId()); 
tableView.add(new Label(applicationDataView.newChildId(),tableName)); 
applicationDataView.add(columnNameView); 
applicationDataView.add(tableView); 
List<dataVO> dataForTable= applicationDataByTable.get(tableName); 
for (DataVO dataVO: dataForTable) 
{ 
    RepeatingView columnValueView= new RepeatingView(applicationDataView.newChildId()); 
    if (!columnNameRendered) 
    { 
     for (String columnName : dataVO.getColumnNamesAndValues().keySet()) 
     { 
      columnNameView.add(new Label(tableName+columnName,columnName)); 
     } 
     columnNameRendered = true; 
    } 
    for (String columnName : dataVO.getColumnNamesAndValues().keySet()) 
    { 
     String columnValue = tableDataValuesForRecordVO.getColumnNamesAndValues().get(columnName); 
     columnValueView.add(new Label(applicationDataView.newChildId(),columnValue)); 
     applicationDataView.add(columnValueView); 
    } 
} 

실제 결과 :

Table name1: 
Column 1 
Column 2 
Column 3 
Val11 
Val12 
.... 


Table name2: 
    Column 1 
    Column 2 
    Column 3 
    Column 4 
    Val11 
    Val12.... 

예상 결과 :

,691,363

클래스는이 구성 요소를 생성하는210

Table Name1: 

    Col1 col2 Col3 
    val11 val12 val13 
    val21 val22 val23 


Table Name2: 

     Co131 col32 Col33 col34 
     val11 val12 val13 val14 
     val21 val22 val23 val24 

동적 데이터를 표시하는 솔루션을 제공하는 데 도움을주십시오.

+0

자바 + HTML 코드를 게시하시기 바랍니다 . 난 그냥

등 – RobAu

+0

@ RobAu 코드를 추가했습니다, Kinldy 제안을 제공 할 수 있다고 생각 – Ranjithkumar

+0

생성 된 HTML을 체크 아웃하십시오. 많은 테이블과 TR 또는 TD가 표시됩니다. 구현하기 쉽고 사용자의 필요에 맞게 DataTable을 사용하도록 더 잘 전환 할 수 있다고 생각합니다. – RobAu

답변

2

예를 들어 DataTable을 많이 사용하는 ListView을 사용할 수 있습니다. (옆의 노트 : 나는 당신이 HTML의 부하를 생성하므로이 매우 빠르고하지 될 것이라 생각합니다.)

자바 :

List<DataVo> dataVoList = ... //create your list of datavo's 

add(new ListView<DataVo>("listview", dataVoList) { 
    protected void populateItem(ListItem<DataVo> item) { 
     DataVo dataVo = (DataVo) item.getModelObject(); 
     final DataProvider dataProviderBasedOnVo = ... //create dataprovider here.   
     IColumn[] columns = ... //create columns here, based on the dataVo 
     item.add(new DataTable("table", columns, dataProviderBasedOnVo, 10)); 
    } 
}); 

HTML :

... 
<div wicket:id="listview"> 
    <table wicket:id="table"></table> 
</div> 
... 
+0

고마워요 @Robau있어 – Ranjithkumar