Реализуете несколько представлений через GWT-платформу? - PullRequest
2 голосов
/ 22 марта 2012

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

У меня есть решение под рукой - добавление логики определения типа браузера в ClientModule, например:

if (browser == "iphone") {
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, HomeView.class, HomePresenter.MyProxy.class);
} else if (browser == "ipad") {
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPadHomeView.class, HomePresenter.MyProxy.class);
} else {
    bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPhoneHomeView.class, HomePresenter.MyProxy.class);
}

Мне интересно, можно ли использовать такие способы, как отложенное связывание в GWT-платформе. (но я бы хотел следовать структуре GWT-plarform, а не добавлять код отложенного связывания в xxx.gwt.xml).

Итак, мои вопросы:

1) Есть ли другие способы реализации функции, упомянутой выше?
2) Какой способ лучше и почему?

Заранее спасибо!

С уважением,
Jiakuan W

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

В папке примеров gwt есть пример, который делает то, что вы хотите.Я использую версию примера кода в моем проекте - за исключением использования Gin для обработки клиентских функций.Образец называется mobilewebapp.Он включает использование метода formfactor в вашем .gwt.xml, чтобы определить, в какой системе вы находитесь - в этом случае он разбивает его на настольные, мобильные и планшетные ПК.Затем в вашем gwt.xml он торгует клиентскими фабриками на основе форм-фактора - вместо этого я торгую моделями джина.Вот ссылка на источник для mobilwebapp

1 голос
/ 22 марта 2012

GWT не позволяет вам устанавливать пользовательские типы пользовательских агентов. Вы ограничены их набором геккона, геккона1_7, сафари, IE6, IE7, IE8 и оперы .

При этом вы можете получить доступ к пользовательскому агенту напрямую и настроить свою логику на соответствующее переключение с помощью Window.Navigator.getUserAgent () или через поставщика свойств.

См. Этот же вопрос на , как выполнить обнаружение мобильного браузера в GWT для MVP.

0 голосов
/ 23 марта 2012

Проверьте группу gwtp google, ее хороший источник, и кто-то опубликовал в pdf о своих усилиях по решению проблемы сакэ. В любом случае, если я правильно помню, он держит несколько модулей gin для каждого клиента с докладчиками и представлениями, выполняет пользовательский js-код при загрузке и затем устанавливает правильный модуль в классе ginClinet.

...