2010-11-08 46 views
2

我有一个Wicket页面,我需要在屏幕上打印我的记录。我将记录保存在我的数据库中。我怎样才能做到这一点DataView?我需要代码示例。如何使用Wicket的DataView?

回答

5

有此页面上的一个古老的例子:

https://cwiki.apache.org/WICKET/a-simple-dataview-example.html

它仍然主要是有效的,已更改的唯一的事情就是检票口支持泛型的最新版本。因此,这里的代码从该页面的更新源:

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> 
+0

非常感谢你。 – user500129 2010-12-18 01:09:07

2

数据视图是一个基本的实现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())); 
    } 
});