2013-02-08 4 views
2

В нашем веб-приложении GWT мы достигаем состояния, в котором мы хотим удалить все и просто показать большое толстое предупреждение о том, что приложение было остановлено.Остановка/остановка GWT от выполнения

Мы не можем найти способ сделать это. То, что мы в основном нужно:

  • сила GWT, чтобы остановить всю обработку и прервать любой существующей RPC сообщения
  • силу все зарегистрированные события, чтобы стать неактивным
  • ясно все видимые содержимого страницы
  • установить один пункт/текст

В двух словах мы хотим убить всю DOM и добавить к нему только один абзац.

Мы перепробовали много различных комбинаций

RootPanel.get().clear() 

но не нашел надежный способ делать то, что мы хотим достичь. Любые идеи, как это сделать?

+0

RootPanel.get(). Clear(); RootPanel.get(). Add (warningMessageWidget); в то время как (истинно); – jusio

+0

'while (true)' заблокирует весь поток браузера, пока браузер не решит закрыть ваше приложение. В некоторых браузерах это остановит все вкладки, а не только приложение, в котором работает ваше приложение. –

+0

Обновить страницу с новым контентом? –

ответ

0

Сохраните информацию или скажите флаг в файлах cookie, когда когда-либо загрузите приложение, посмотрите, установлен ли этот файл cookie, если он установлен, отображает сообщение или загружает приложение. Теперь, когда вы хотите полностью остановить приложение, установите cookie и перезагрузите приложение.

+0

Извините, вы неправильно поняли мой вопрос. Я не спрашиваю, как узнать, что мое приложение должно остановиться. Я просто ищу способ GWT сказать 'exit (0);' ... – Sebi

1

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

Вы можете сделать это вручную в каждом методе службы или у вас может быть фильтр, который обрабатывает это. Такие среды, как Spring Security, обеспечивают простой способ настройки фильтров безопасности.

После того, как вы сделали с серверной стороны и подтвердили, что пользовательский интерфейс не может проникнуть через уровень безопасности сервера, вы можете внести изменения в пользовательский интерфейс. Существуют различные способы сделать красивый экран блокировки.

В общем, я делаю следующее в своем коде для создания контента и могу использовать метод clear() для удаления области просмотра или материала из окна просмотра. Не требуется обновление или повторная аттестация.

Viewport viewport = new Viewport(); 
    viewport.setLayout(new FitLayout()); 
    viewport.add(new MainPanel()); 
    RootPanel.get().add(viewport); 

Не знаете, как выглядит ваш макет. Если вы можете предоставить образец кода для своего сценария, я могу показать вам, как делать то, что вам нужно. Потому что в моих примерах это работает отлично.

+0

Я думаю, что основная проблема, с которой я сталкиваюсь, заключается в том, что мне нужно остановить обработку событий, чтобы после очистки все новые вещи не добавляются. .. – Sebi

+0

Прекращение обработки событий никогда не является изящным решением. Вместо этого вам следует проигнорировать события в этом состоянии вашего приложения. В качестве альтернативы вы можете отключить свою модель данных от того, что кормит ее новыми событиями/данными. – ATrubka

1
Window.Location.replace("URL-OF-A-STATIC-HTML") 

Javadoc:

Заменяет текущий URL с новым. Все состояние GWT будет потеряно. В истории браузера текущий URL-адрес будет заменен новым URL-адресом .

Если вы хотите повторно активировать приложение GWT, поместите ссылку на эту HTML-страницу.

+0

Именно так я и делал это сейчас. Я перехожу к какой-то странице ошибок. Однако это возможно только в том случае, если у меня все еще есть соединение с сервером. Если сервер отключен, и мое приложение GWT уведомляет об этом и хочет сообщить об этом пользователю, нет возможности перенаправить пользователя на статическую страницу, которую необходимо получить с сервера. – Sebi

+0

Хорошо, я понимаю, что вы имеете в виду ... URL-OF-A-STATIC-HTML может быть недоступен? Возможно, вы можете кэшировать его в автономном режиме при запуске, используя HTML5 и файл манифеста, если браузер вашего клиента поддерживает его; – koma

Смежные вопросы