Wicket:将列表添加到数据表
Wicket : Add a list to a datatable
我有一个要在 table 窗口中显示的对象列表。
这些对象由一个字符串和一个字符串数组组成。
我的问题是我不知道如何将这个数组添加到我的 table 中。其次,我有一些 css 需要应用于数组的每个字符串,因此它们中的每一个都必须位于不同的 div/span/li.
连接所有这些元素并手动添加“div”是个好主意吗?
感谢您的帮助:)
我一直太沉迷于使用数据表。通过在列表中使用列表,它工作得很好!
JAVA :
ListView<Profil> listProfil = new ListView<Profil>("listProfils", profils) {
protected void populateItem(ListItem<Profil> item) {
Profil tmpProfil = item.getModelObject();
item.add(new Label("libelle", tmpProfil.getLibelle()));
item.add( new ListView("listChamps", tmpProfil.getChamps()) {
protected void populateItem(ListItem item) {
item.add(new Label("libelleChamps", item.getModel()));
}
});
}
});
以及关联 HTML 模板:
<tr wicket:id="listProfils">
<div class="row">
<td class="col-xs-4 col-md-3 col-lg-3 text">
<span wicket:id="libelle"></span>
</td>
<td class="col-xs-7 col-md-8 col-lg-8 text" colspan="3">
<span wicket:id="listChamps">
<span wicket:id="libelleChamps"
class="label label-default badge badge-tag" >Champs</span>
</span>
</td>
</div>
</tr >
作为 Wicket 中的一个好习惯,要在 HTML 中构建一个从列表中获取的 Table,您需要以下元素:
HTML
<table wicket:id="yourWicketIdOfDataTableObject">[table]
</table>
JAVA
代表您的 table
的每个元素 (o regiser
) 的 POJO (pojoObject
)
从 SortableDataProvider<pojoObject, String>
扩展的数据提供者 (dataProviderObject
) class
您需要根据需要覆盖 iterator()
、size()
和 model()
方法。
一个List<IColumn<pojoObject,String>> columnsObject
以上对象将代表您的 table.
的列
您可以按如下方式添加列:
columnsObject.add(new PropertyColumn<pojoObject,String>(new Model<String>("nameOfTheColum"),pojoObjectPropertyName))
一个默认数据Table tableObject
:
DataTable<pojoObject, String> = new DefaultDataTable("yourWicketIdOfDataTableObject", columnsObject, dataProviderObject, NumOfColumns)
以上对象将代表 table.
如你所见,pojoObject
被 columnsObject
和 dataProviderObject
包裹,而这两个在最后会被 tableObject
包裹。您的数组将在 dataProviderObject
的 iterator()
方法中访问,因为它需要检索列表的迭代器; pojoObject
表示实际列表中的每个元素都是必需的(如果您还没有的话)
最后,您只需在其 Wicket Parent 中添加 tableObject
,就像任何其他 Wicket 组件一样。
我有一个要在 table 窗口中显示的对象列表。 这些对象由一个字符串和一个字符串数组组成。
我的问题是我不知道如何将这个数组添加到我的 table 中。其次,我有一些 css 需要应用于数组的每个字符串,因此它们中的每一个都必须位于不同的 div/span/li.
连接所有这些元素并手动添加“div”是个好主意吗?
感谢您的帮助:)
我一直太沉迷于使用数据表。通过在列表中使用列表,它工作得很好!
JAVA :
ListView<Profil> listProfil = new ListView<Profil>("listProfils", profils) {
protected void populateItem(ListItem<Profil> item) {
Profil tmpProfil = item.getModelObject();
item.add(new Label("libelle", tmpProfil.getLibelle()));
item.add( new ListView("listChamps", tmpProfil.getChamps()) {
protected void populateItem(ListItem item) {
item.add(new Label("libelleChamps", item.getModel()));
}
});
}
});
以及关联 HTML 模板:
<tr wicket:id="listProfils">
<div class="row">
<td class="col-xs-4 col-md-3 col-lg-3 text">
<span wicket:id="libelle"></span>
</td>
<td class="col-xs-7 col-md-8 col-lg-8 text" colspan="3">
<span wicket:id="listChamps">
<span wicket:id="libelleChamps"
class="label label-default badge badge-tag" >Champs</span>
</span>
</td>
</div>
</tr >
作为 Wicket 中的一个好习惯,要在 HTML 中构建一个从列表中获取的 Table,您需要以下元素:
HTML
<table wicket:id="yourWicketIdOfDataTableObject">[table]
</table>
JAVA
代表您的 table
的每个元素 (o regiser
) 的 POJO (pojoObject
)
从 SortableDataProvider<pojoObject, String>
dataProviderObject
) class
您需要根据需要覆盖 iterator()
、size()
和 model()
方法。
一个List<IColumn<pojoObject,String>> columnsObject
以上对象将代表您的 table.
的列您可以按如下方式添加列:
columnsObject.add(new PropertyColumn<pojoObject,String>(new Model<String>("nameOfTheColum"),pojoObjectPropertyName))
一个默认数据Table tableObject
:
DataTable<pojoObject, String> = new DefaultDataTable("yourWicketIdOfDataTableObject", columnsObject, dataProviderObject, NumOfColumns)
以上对象将代表 table.
如你所见,pojoObject
被 columnsObject
和 dataProviderObject
包裹,而这两个在最后会被 tableObject
包裹。您的数组将在 dataProviderObject
的 iterator()
方法中访问,因为它需要检索列表的迭代器; pojoObject
表示实际列表中的每个元素都是必需的(如果您还没有的话)
最后,您只需在其 Wicket Parent 中添加 tableObject
,就像任何其他 Wicket 组件一样。