列数可变的检票桌
我一直在通过向页面添加 ListView
(以 List
形式向其提供我的数据)来创建表格,并将相应的 id 分配给中的每一列html 文件。
但是现在我遇到的情况是,我没有简单的 List
,而是 List
。我还获得了一个包含嵌套映射的所有可能键的列表 (List
)。现在我需要创建一个表,其中 Map 的每个值都应位于键名称指向该值的列中。
假设我有以下数据:
keys = ['a', 'b']
data = [ { 'a' = 1, 'b' = 2 },
{ 'a' = 3, 'b' = 4 },
{ 'a' = 5, 'b' = 6}]
我想创建表:
<table>
<tr>
<th>a</th>
<th>b</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
</tr>
</table>
知道嵌套 Map 中的键的名称和数量可以更改,在 wicket 中实现此功能的最佳方法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
下面是使用 DefaultDataTable 和嵌套 ListView 的示例。
请注意,虽然 DataTable 方法可能看起来不那么简单(嗯,这取决于旁观者的眼睛),但它实际上将数据获取与可视化更清晰地分开,并且您可以获得开箱即用的分页:尝试添加更多数据,或降低
rowsPerPage
(DefaultDataTable 的最后一个构造函数参数)。Below, examples using DefaultDataTable and nested ListViews.
Note that, while the DataTable approach may look less straightforward (well, it depends on the eye of the beholder), it actually separates more cleanly data fetching from visualization, and you get pagination out-of-the-box: try adding more data, or lowering the
rowsPerPage
(DefaultDataTable's last constructor param).您可以嵌套
ListView
。您想要的标记将如下所示:然后您将需要三个
ListView
。第一个 (headerlist
) 将填充keys
列表中的标头。这很简单,所以我将跳过该示例。第二个 (
contentlist
) 将位于您的data
列表中。在populateItems
方法中,您将添加第三个ListView
(column
),它将再次遍历keys
列表:You can nest
ListView
. The markup you want will look something like this:You will then need three
ListView
. The first (headerlist
) will fill in the headers from thekeys
list. This is simple, so I'll skip the example.The second (
contentlist
) will be across yourdata
list. In thepopulateItems
method you will add the thirdListView
(column
), which will again iterate across thekeys
list:您当然可以使用嵌套的ListView,但您也可以使用
DataTable
及其后代,专门为此任务而设计。作为奖励,您还可以从中获得诸如排序和分页之类的功能。You can of course use nested
ListView
s, but you can also useDataTable
and its descendants, which were specifically designed for this task. As a bonus you can also get things like sorting and pagination out of them.谢谢铁雄!我已经填写了 Tetsuo 变量列示例的泛型:
Wicket HTML
Wicket Java
通用用法
DefaultDataTable extends DataTable
IColumn
ISortableDataProvider
Thanks Tetsuo! I've filled in the Generics for Tetsuo's variable column examples:
Wicket HTML
Wicket Java
Generic Usage
DefaultDataTable extends DataTable
IColumn
ISortableDataProvider