Веб-сайт с двумя Composite на странице. Из-за плохого дизайна?

Я создаю сайт с использованием GWT впервые. В приложении есть два класса Composite, один из которых представляет собой меню, а другой - где я показываю информацию о конкретном меню, которое было выбрано. Я использую MVP, класс History и интерфейс ChangeValueHandler для переключения между разными страницами.

У меня есть одна пара-ведущий для каждого Composite. Приложение хорошо начинает создавать меню и информацию о разделе. Когда вы нажимаете в меню, оно работает нормально, показывая информацию, и браузер токенов меняется. Дело в том, что если вы загрузите страницу (например, myapp.com # register) без загрузки домашней страницы, она не покажет вам меню. Он загружает информацию раздела Composite, но не меню Composite (меню Composite загружается с myapp.com # home).

Я думаю, что это из-за плохого дизайна приложения, но я не знаю, как это сделать другим способом. Если бы приложение имело только один Composite, это не было бы проблемой, но когда на странице было 2 или более Composite, я не знаю, как правильно управлять всем этим.

2 ответа

Трудно сказать, что именно не так, из-за отсутствия кода. Так что я думаю. Вы должны спроектировать, чтобы действовать на PlaceChangeEvent вместо ValueChangeEvent. Это означает, что щелчок меню должен вызвать изменение места, и тогда приложение будет обрабатывать это событие. Таким образом, вы отменяете действия меню со своих страниц контента. И больше думать о каждой странице как о отдельной сущности. Также взгляните на механизм GWT Activity и на то, как он помогает иметь главную страницу, которая всегда одинакова, и на этой главной странице область содержимого, которая изменяется в зависимости от фактически отображаемой страницы.

Вы должны включить свое меню на каждой странице, а не создавать его один раз на домашней странице, а затем держать его на экране. Я предполагаю, что вы создаете меню и добавляете его в DOM через

RootPanel.get().add(myMenuWidget); 

Если вы используете UIBinder, было бы довольно просто включить меню на каждой странице, просто добавив соответствующий тег в каждый файл.ui.xml ваших страниц.

Другие вопросы по тегам