3.5.22. 打开外部 URL

WebBrowserTools 是用来打开外部 URL 的一个工具类 bean。BrowserFrame 组件是用来展示一个内嵌网页,而 WebBrowserTools 是在用户的浏览器 tab 访问 URL。

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 - 字符串值,作为客户端 window.open 调用时的 target 名称。也就是说,只能考虑 "_blank""_self""_top""_parent"。如果未指定,则使用 "_blank"

  • width - 整型值,指定浏览器窗口宽度,单位是像素。

  • height - 整型值,指定浏览器窗口高度,单位是像素。

  • border - 字符串值,设置浏览器窗口的 border 样式。可以是 "DEFAULT""MINIMAL""NONE" 之一。

WebBrowserTools 并非普通的 Spring bean,所以只能在界面控制器注入,或者通过 AppUI.getCurrent().getWebBrowserTools() 方法获取。不能注入到 Spring bean,也不能通过 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 类,可以参阅 通用 UI 基础设施 了解更多。