我有一个Wicket页面,我需要在屏幕上打印我的记录。我将记录保存在我的数据库中。如何使用DataView
执行此操作?我需要代码示例。
答案 0 :(得分:5)
这个页面上有一个古老的例子:
https://cwiki.apache.org/WICKET/a-simple-dataview-example.html
它仍然大部分都是有效的,唯一改变的是当前版本的wicket支持泛型。所以这是该页面代码的更新源:
Java代码:
public class Sub1Page extends WebPage{
private static final long serialVersionUID = 1L;
public Sub1Page(){
Contact contact = null;
final List<Contact> list = new ArrayList<Contact>();
char character;
// a - z
for(int i = 97; i < 123; i++){
character = (char) i;
contact = new Contact(String.valueOf(character));
list.add(contact);
}
final DataView<Contact> dataView =
new DataView<Contact>("simple", new ListDataProvider<Contact>(list)){
private static final long serialVersionUID = 1L;
@Override
public void populateItem(final Item<Contact> item){
final Contact user = item.getModelObject();
item.add(new Label("id", user.getId()));
}
};
dataView.setItemsPerPage(10);
add(dataView);
add(new PagingNavigator("navigator", dataView));
}
}
HTML代码(未更改):
<wicket:extend>
<table cellspacing="0" class="dataview">
<tbody>
<tr wicket:id="simple">
<td><span wicket:id="id">Test ID</span></td>
</tr>
</tbody>
</table>
<div wicket:id="navigator"></div>
</wicket:extend>
答案 1 :(得分:0)
DataView是AbstractDataView的基本实现。数据视图旨在通过利用IDataProvider充当数据库和数据视图之间的接口,使从数据库填充重复视图变得非常简单。
Example:
<tbody>
<tr wicket:id="rows">
<td><span wicket:id="id">Test ID</span></td>
...
虽然此示例与HTML表有关,但DataView并不仅限于HTML表。可以使用DataView呈现任何类型的列表。
相关的Java代码:
add(new DataView<UserDetails>("rows", dataProvider)
{
public void populateItem(final Item<UserDetails> item)
{
final UserDetails user = item.getModelObject();
item.add(new Label("id", user.getId()));
}
});