Повторители Apache Wicket: обзор - PullRequest
14 голосов
/ 13 октября 2011

У Wicket есть много реализаций AbstractRepeaters: ListView, DataView, GridView, Loop, PropertyListView и т. Д.

Лично мне сложно определить, какое представление будет идеальным для данного сценария.Я обычно придерживаюсь DataView, но это просто потому, что я к этому привык.Возможно, GridView будет лучше для сценария A, PropertyListView для B, ....

Кто-нибудь знает о блоге или любом учебном пособии, где объясняются различия мнений, или кто-то, кто может объяснить, какое представление лучшедля какого варианта использования?

1 Ответ

28 голосов
/ 13 октября 2011

У калитки есть много дополнительных, тривиальных классов, которые вызывают у вас замешательство.Разные компоненты лучше для разных сценариев, но есть много компонентов 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 компонентов, которые выполняют то же самое.

Надеюсь, это поможет!

...