【问题标题】:How to println list of object in wicket table?如何打印检票口表中的对象列表?
【发布时间】:2012-08-17 07:25:11
【问题描述】:

我有课:

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.toString() 的 result.size() 列,最后一列应该是 score

谢谢帮助

【问题讨论】:

标签: java wicket


【解决方案1】:

编辑

对不起,我第一次没有理解这个问题。

我从未尝试过这个(所以不确定是否可行),但也许您也可以将 ListView 应用于&lt;td&gt; 标签(用于结果),就像在&lt;tr&gt; 标签(用于 PlayerResults)中所做的那样.

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>

【讨论】:

  • 你确定吗?此代码未编译。没有这样的构造函数: new Label("results", item.getModelObject().getResults().size());新标签(字符串,整数)...
  • 是的,您需要使用字符串或模型(这很简单)。代码未经过测试。不需要 -1
  • 是的,因为你不明白我的问题,你的例子没有任何意义。您只需添加一列,其中将是结果的值大小,但我想添加到表 x 列,其中 x 是结果列表的大小,所以您的问题完全关闭 = -1
【解决方案2】:

所有玩家的结果列表的大小都相同吗? 然后只需实现一个 IDataProvider 迭代您的 PlayerResults。

添加适当的列:

new PropertyColumn(Model.of("Name")."player.name");

new PropertyColumn(Model.of("Suram")."player.surname");

new PropertyColumn(Model.of("Result 1")."results.0");

new PropertyColumn(Model.of("Result 2"). "results.1"); ...

斯文

【讨论】:

  • 嗯,你试试这个?因为“results.0”给我抛出异常:没有为类定义get方法:类org.toursys.repository.model.PlayerResult表达式:结果,我有这样的方法
  • 你好像忘了定义setter和getter
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
相关资源
最近更新 更多