如何使用 Wicket 中的中继器以表格格式添加动态内容



我是检票口的新手,正在尝试在检票口中添加纯动态内容。我有一个对象列表 TableDataValuesVO,其中包含一个字符串 tableName 和一个映射列 NamesAndValues(包含列名称及其值)。列表中的每个对象表示不同表的不同数据记录(每个对象的列名称和值的大小不同)。到目前为止,我正在对列名称和值使用重复视图,但它每行显示一列名称,每行显示一列价值。

生成此组件的类:
目录:

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

预期成果:

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

请帮助提供显示动态数据的解决方案?

例如

,您可以使用绘制大量DataTableListView。认为这不会很快,因为您将生成大量 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>
...

最新更新