3.5.22. Открытие внешних ссылок

WebBrowserTools - это служебный бин для открытия внешних URL адресов. В то время как компонент BrowserFrame открывает встроенные веб-страницы внутри приложения, WebBrowserTools позволяет открывать внешние ссылки во вкладке браузера пользователя.

WebBrowserTools представляет собой функциональный интерфейс, содержащий единственный метод: void showWebPage(String url, @Nullable Map<String, Object> params).

@Inject
private WebBrowserTools webBrowserTools;

@Subscribe("button")
public void onButtonClick(Button.ClickEvent event) {
    webBrowserTools.showWebPage("https://cuba-platform.com", ParamsMap.of("_target", "blank"));
}

Метод showWebPage() может принимать дополнительные параметры:

  • target - строковое значение параметра target для вызова window.open на стороне клиента. Рассматриваются такие значения, как "_blank", "_self", "_top", "_parent". Если параметр не указан, по умолчанию используется "_blank".

  • width - целочисленное значение ширины окна браузера в пикселях.

  • height - целочисленное значение высоты окна браузера в пикселях.

  • border - строковое значение для стиля границ окна браузера. Может принимать следующие значения: "DEFAULT", "MINIMAL", "NONE".

WebBrowserTools не является нормальным бином Spring, получить ссылку на него можно только непосредственной инжекцией в контроллер экрана или через AppUI.getCurrent().getWebBrowserTools(). Не пытайтесь инжектировать его в другие бины Spring или получить его через AppBeans.get().

К примеру, если вы хотите открывать некий URL прямо из меню приложения, вам нужно создать класс, реализующий Runnable, и, ввиду невозможности инжекции, вызывать в нём статический метод AppUI.getCurrent():

public class ExternalUrlMenuItemRunner implements Runnable {

    @Override
    public void run() {
        AppUI.getCurrent().getWebBrowserTools().showWebPage("http://www.cuba-platform.com", null);
    }
}

Более детально о классе AppUI см. в разделе Инфраструктура Generic UI.