Wicket有很多AbstractRepeater实现:ListView,DataView,GridView,Loop,PropertyListView等。
就个人而言,我发现很难确定哪种观点对于哪种情况是理想的。我通常坚持使用DataView但这只是因为我已经习惯了。也许GridView对于场景A,B的PropertyListView,....更好。
是否有人知道某个博客或任何教程,其中解释了观点的差异,或者任何人可以解释哪个观点最适合哪个用例?
答案 0 :(得分:28)
Wicket有很多额外的,琐碎的课程,这会引起你的困惑。对于不同的场景,不同的组件 更好,但是对于罕见的情况,有许多Wicket组件不会增加任何真正的复杂性。
例如,RequiredTextField
是一个完整的类,相当于:
TextField x = new TextField("text");
x.setRequired(true);
我认为这源于旧版本,其中所需的设置更复杂,但它仍然存在引起一些混淆。
许多中继器都很相似。 PropertyListView
只是将模型包装在CompoundPropertyModel
中,使属性表达式更容易(见下文)。但是,您可以自己轻松地进行此更改。
所以,这是我的快速摘要,因为我无法找到您所描述的最新博客文章:
重复查看 - 当您没有列表或添加不同类型的组件(因此不同的内部标记)时非常有用。
ListView - 如果你有一个List
并且你正在显示整个内容,则非常有用。可悲的是,它不适用于其他已排序的集合。
DataView - 如果从数据库加载,则非常有用。其他方法允许您轻松地对数据集进行排序,分页和修改。
PropertyListView - 如果您只是通过属性表达式显示值,则非常有用。允许你这样做
item.add(new Label("name"));
而不是
item.add(new Label("name", new PropertyModel<String>(item.getModel(), "name")))
循环 - 如果您想重复Integer
次而不是设置的数据列表,则非常有用。这相当于ListView
,其模型对象为List<Integer>
,其中填充了从0
到length
的整数
GridView - 用于获取单个列表(例如21个字符串)并使用两组标记(内部/外部)以组显示该列表(例如7x3网格)。但是,它假定您的标记使用某些检票口:id,但没有详细记录。我认为使用一对嵌套的RepeatingView
组件会更好,这些组件可以实现同样的目的。
希望有所帮助!