У калитки есть много дополнительных, тривиальных классов, которые вызывают у вас замешательство.Разные компоненты лучше для разных сценариев, но есть много компонентов Wicket для редких случаев, которые не добавляют реальной сложности.
Например, RequiredTextField
- это целый классэто эквивалентно:
TextField x = new TextField("text");
x.setRequired(true);
Я предполагаю, что это связано со старой версией, где требуемая настройка была более сложной, но она все еще может вызвать некоторую путаницу.
Многие из ваших репитеров похожи,PropertyListView
просто оборачивает модель в CompoundPropertyModel
, упрощая выражения свойств (см. Ниже).Тем не менее, вы можете легко внести это изменение самостоятельно.
Итак, вот мое краткое резюме, так как я не смог найти актуальную запись в блоге, как вы описали:
RepeatingView - очень полезно, когда у вас нет списка или вы добавляете разные типы компонентов (и, следовательно, разную внутреннюю разметку).
ListView - полезно, если выесть List
, и вы показываете все это.К сожалению, он не работает с другими отсортированными коллекциями.
DataView - полезно, если вы загружаете из базы данных.Дополнительные методы позволяют легко сортировать, разбивать на страницы и изменять набор данных.
PropertyListView - полезно, если вы просто отображаете значения через выражение свойства.Позволяет вам делать
item.add(new Label("name"));
вместо
item.add(new Label("name", new PropertyModel<String>(item.getModel(), "name")))
Loop - полезно, если вы хотите повторить Integer
количество раз вместо заданного спискаданных.Это будет эквивалентно ListView
, чей объект модели представляет собой List<Integer>
, заполненный целыми числами от 0
до length
GridView - полезно для создания одного списка (например,21 строки) и использование двух наборов разметки (внутренней / внешней) для отображения этого списка в группах (например, сетка 7x3).Однако предполагается, что ваша разметка использует определенные wicket: id's, которые недостаточно хорошо документированы.Я думаю, что вам было бы лучше с парой вложенных RepeatingView
компонентов, которые выполняют то же самое.
Надеюсь, это поможет!