2012-08-17 71 views
1

我有类:如何在检票表中打印对象列表?

public class PlayerResult implements Serializable { 

    private static final long serialVersionUID = 1L; 

    private long playerResultId; 

    private Player player; 

    private String score; 

    private List<Result> results; 
... 
} 

如何我可以打印这个类到检票口表?第一栏应该是球员的名字和姓氏,然后result.size()result.toString()和最后一列列应得分

THX的帮助

+0

你尝试过这么远吗?我会使用DataTable或AjaxFallbackDefaultDataTable。 – 2012-08-17 07:29:06

+0

我遵循这个例子:http://www.wicket-library.com/wicket-examples/repeater/wicket/bookmarkable/org.apache.wicket.examples.repeater.AjaxDataTablePage?0但我不知道如何传递列表的类成列 – hudi 2012-08-17 07:32:20

回答

4

编辑

对不起,我没有第一次进入这个问题。 (对于PlayerResults),我们从来没有试过这个(所以不确定它是否可能),但也许你也可以应用一个ListView到<td>标签(对于结果),就像它在<tr>标签中完成一样。

的Java:

List<PlayerResult> players = // ... 
ListModel<PlayerResult> playersModel = new ListModel<PlayerResult>(players); 
ListView<PlayerResult> list = new ListView<PlayerResult>("list", playersModel) { 
    @Override 
    protected void populateItem(ListItem<PlayerResult> item) { 
     Label name = new Label("name", new PropertyModel<String>(item.getModel(), "player.name")); 
     Label surname = new Label("surname", new PropertyModel<String>(item.getModel(), "player.surname")); 
     Label results= new Label("results", item.getModelObject().getResults().size()); 

     ListView<Result> scoreList= new ListView<Result>("scoreList", item.getModelObject().getResults()){ 
      @Override 
      protected void populateItem(ListItem<Result> resultItem) { 
        item.add(new Label("score", new PropertyModel<Integer>(resultItem.getModel(), "scoreValue ? "))); 
      } 
     } 

     // ... 

     item.add(name); 
     item.add(surname); 
     item.add(results); 
     item.add(scoreList); 
     // ... 
    } 
} 

HTML:

<table> 
    <tr wicket:id="list"> 
     <td><span wicket:id="name">[name label]</span></td> 
     <td><span wicket:id="surname">[surname label]</span></td> 
     <td><span wicket:id="results">[results label]</span></td> 
     <!-- and now variable number of tds --> 
     <td wicket:id="scoreList"> 
      <span wicket:id="score"></span> 
     </td> 
    </tr> 
</table> 
+0

呃你确定?此代码未编译。没有这样的构造函数:new Label(“results”,item.getModelObject()。getResults()。size());新的标签(字符串,整数)... – hudi 2012-08-17 11:35:33

+0

是的,你需要使用一个字符串或模型(这是微不足道的)。代码未经测试。没有必要为-1这个 – nuno 2012-08-17 13:31:57

+0

是的,因为你不明白我的问题,你的例子没有任何意义。您只需添加一列,其中将结果的值大小,但我想添加到表x列,其中x是结果列表的大小,所以你的问题是完全关闭= -1 – hudi 2012-08-17 13:46:36

2

是否所有玩家的结果列表具有相同的大小? 然后只是实现一个IDataProvider迭代你的PlayerResults。

添加相应的列:

新PropertyColumn(Model.of( “姓名”) “player.name”);

new PropertyColumn(Model.of(“Surame”)。“player.surname”);

new PropertyColumn(Model.of(“Result 1”)。“results.0”);

new PropertyColumn(Model.of(“Result 2”)。“results.1”); ...

斯文

+0

hm,你试试这个吗?因为“results.0”抛出异常:没有为类定义方法:class org.toursys.repository.model.PlayerResult expression:results and I have there such method – hudi 2012-08-17 12:04:47

+0

似乎你忘了定义setter和getters – nuno 2012-08-17 13:40:39