我是Wicket的新手,我正试图在wicket中添加纯粹的动态内容。 我有一个对象TableDataValuesVO列表,它有一个String tableName和一个map columnNamesAndValues(包含columnName及其值)。列表中的每个对象表示不同表的不同数据记录(columnNameAndValues的大小因每个对象而不同)。截至目前,我正在对columnName和Value使用重复查看。但它每行显示一个columnName,每行显示一个columnValue。
生成此组件的类:
HTML:
<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
请帮助提供显示动态数据的解决方案?
答案 0 :(得分:2)
例如,您可以使用吸引了大量ListView
的{{1}}。 (旁注:我认为这不会很快,因为你会生成大量的HTML。)
爪哇:
DataTable
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));
}
});