2012-08-17 76 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