Apache Wicket Repeaters:概述

2022-09-03 18:29:51

Wicket有许多抽象重复器的实现:ListView,DataView,GridView,Loop,PropertyListView等。

就个人而言,我发现很难确定哪种视图最适合哪种情况。我通常坚持使用DataView,但这仅仅是因为我习惯了它。也许 GridView 更适合场景 A,A PropertyListView 适用于 B,....

有没有人知道一个博客或任何教程,其中解释了视图的差异,或者任何人都可以解释哪种视图最适合哪个用例?


答案 1

Wicket有很多额外的,琐碎的类,这引起了你的困惑。不同的组件更适合不同的场景,但对于极少数情况,有很多 Wicket 组件不会增加任何实际的复杂性。

例如,是一个等效于以下内容的整个类:RequiredTextField

 TextField x = new TextField("text");
 x.setRequired(true);

我认为这源于一个较旧的版本,其中所需的设置更复杂,但它仍然会引起一些混乱。

您的许多中继器都是相似的。 只是将模型包装在 中,使属性表达式更容易(见下文)。但是,您可以自己轻松进行此更改。PropertyListViewCompoundPropertyModel

因此,这是我的快速摘要,因为我无法找到您描述的最新博客文章:

RepeatingView - 当您没有列表或要添加不同类型的组件(因此是不同的内部标记)时非常有用。

ListView - 如果你有一个并且你正在显示整个东西,那么很有用。可悲的是,它不适用于其他排序的集合。List

DataView - 如果从数据库加载,则很有用。其他方法允许您轻松地对数据集进行排序、分页和修改。

PropertyListView - 如果只是通过属性表达式显示值,则非常有用。允许你做

 item.add(new Label("name")); 

而不是

 item.add(new Label("name", new PropertyModel<String>(item.getModel(), "name")))

循环 - 如果要重复多次而不是一组数据列表,则很有用。这等效于其模型对象是用从 到 的整数填充的IntegerListViewList<Integer>0length

GridView - 用于获取单个列表(例如21个字符串)并使用两组标记(内部/外部)以组(例如7x3网格)显示该列表。但是,它假设您的标记使用某些 wicket:id,而这些 wicket:id 没有得到很好的记录。我认为最好使用一对嵌套组件,它们可以完成相同的操作。RepeatingView

希望有所帮助!


答案 2

推荐