我是检票口的新手,正在尝试在检票口中添加纯动态内容。我有一个对象列表 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
请帮助提供显示动态数据的解决方案?
例如
,您可以使用绘制大量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>
...