(Как) я могу предоставить пользовательский класс для настройки страниц в Wicket? - PullRequest
3 голосов
/ 20 июля 2011

Я хотел бы изменить способ, которым Wicket создает экземпляр моего экземпляра Page для подмножества URL.Обычно я сопоставляю класс URL с mount(), и в этом случае Wicket выбирает один из доступных конструкторов для этого класса и создает его экземпляр.

Часть моего приложения - это простые операции CRUD, которые имеютМного общего между различными типами сущностей.Я учел общие аспекты в некоторых фабричных и вспомогательных классах, и теперь у меня осталась иерархия классов для моих страниц, которая выглядит следующим образом:

                          TemplatePage
                               | 
                       AbstractEntityPage
              |                                 |
      AbstractVenuePage                 AbstractEventPage
      |                |                |                |
ViewVenuePage    EditVenuePage    ViewEventPage    EditEventPage

Я хотел бы сократить последние два уровня,поскольку иерархия начинает расширяться по мере добавления новых типов сущностей, и в этих классах остается очень мало кода, который можно легко разложить на более общие объекты.

Довольно просто преобразовать AbstractEntityPage в класс EntityPage, который подключает определенные компоненты по мере необходимости.Я обычно использовал бы Builder для этого, но я не уверен, как я скажу Wicket использовать его?Я не могу найти зацепку для этого в документации API.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Можно заменить IPageFactory по умолчанию на org.apache.wicket.settings.ISessionSettings.setPageFactory (IPageFactory) и использовать другую стратегию создания страницы, если она особенная.

1 голос
/ 21 июля 2011

Вы можете использовать EntityPage и реализовать различия внутри своих панелей, но тогда вам понадобится много похожих панелей (или несколько общих панелей, если они на самом деле не отличаются). Или вы можете взглянуть на одну из библиотек быстрого прототипирования для калитки, например wicketopia . Я бы не подумал, что кто-то из них (тех, кого я нашел и протестировал) готов к производству, но их можно найти для идей g .

...