2013-04-08 3 views
1

Я строю систему, которая будет использоваться в корпоративной среде в качестве основной рабочей среды пользователей. Мы хотели бы открыть второе окно браузера для определенных функций и иметь 2 окна связи (например, просматривать интерфейс отображения на одном, выбирать объект и открывать его в редакторе в другом окне). У меня есть два варианта, которые я могу придумать:Несколько окон браузера Связь с GWT или GXT

1) Попытка внедрить некоторые методы JSNI для получения дескриптора в окне и обмениваться данными таким образом.

2) Реализовать сервер давно опроса передать события с общей сессией через куки

Есть ли какие-либо примеры или предложения о том, как идти о достижении варианта 1? Я использую GWT и GXT.

Или у вас есть другое предложение о том, как добиться множественного взаимодействия с браузером?

ответ

0

Спасибо за предложения. Мы планируем пересмотреть наш навигационный механизм, а «Действия и места» выглядят очень аккуратно. На данный момент мы перемещаемся по событиям, запущенным с EventBus, который класс навигации прослушивает и направляет навигацию соответственно.

У меня есть общение, происходящее через JSNI. Тем не менее, у меня с ним неприятная проблема. Новое окно делает вызов:

public native void fireCrossBrowserEvent(GwtEvent<?> event) /*-{ 
    $wnd.opener.fireCrossBrowserEvent(event); 
}-*/; 

Что вызывает этот метод в главном окне:

$wnd.fireCrossBrowserEvent = $entry(function(event) { 
    $wnd.alert("fireCrossBrowserEvent: " + event); 
    @my.application.client.event.EventBus::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); 
}); 

который называет:

public static void fireEvent(GwtEvent<?> event) { 
    System.out.println("fireEvent: " + event); 
    bus.fireEvent(event); 
} 

Я закончил с использованием Google AutoBean, чтобы синхронизировать и desynchronise события для отправки через JSNI. Все работает красиво. Кроме того, для обратной связи с дочерним окном мне пришлось создать новый Native метод для замены метода Window.open GWT, чтобы он возвращал ссылку на новое окно. Функция javascript возвращает ссылку на новое окно, но по какой-то причине оболочка GWT возвращает void.

0

Я использую браузер для взаимодействия с браузером с помощью websockets через JMS-сервер для трансляции. Относительно просто настроить сервер ретрансляции.

Места могут быть решением, если вы можете кодировать свои данные в URL-адресах, загружаемых в другое место.

Re: нуль GwtEvent

От javadoc:

Все события GWT считаются мертвыми и больше не должны быть доступны однажды HandlerManager который первоначально обожженного событие заканчивается его. То есть, не держитесь за объекты событий за пределами вашего обработчика методов.

Может быть, вы должны скопировать GwtEvent в JavaScriptObject согласно this blog entry на яваскрипте типы наложения, прежде чем ретрансляция его дальше.