如何通过主菜单直接打开一个外部链接

请问有没有办法直接点击主菜单,让浏览器打开一个外部链接呢?比如打开百度的主页,可以通过XML的配置实现么?

image
文档里只找到这个说明,但是没说怎么使用啊,这个自定义的Runner怎么设置到主菜单里呢?

你试试 A.menu.xml - CUBA 框架开发者手册 下面这个方法:
image

用这个方法后,发现在XML里面设置 properties属性想传入属性好像无效了,有什么办法传入属性吗?比如跳转的url

XML 配置实现不了。但是可以通过代码实现:

  1. menu.xml 配置:
    <menu id="application-cubademo" insertBefore="administration" caption="mainMsg://menu_config.application-cubademo">
        <item id="menu1" caption="mainMsg://menu_config.testMenu"/>
        <item id="menu2" caption="mainMsg://menu_config.testMenu"/>
    </menu>
  1. 扩展主界面,添加下列代码:
@UiController("main") // 使用  main 替换框架默认的主界面。
@UiDescriptor("ext-main-screen.xml")
public class ExtMainScreen extends MainScreen {
    @Inject
    private SideMenu sideMenu; // 这里根据你的主界面注入界面中的 menu
    @Inject
    private WebBrowserTools webBrowserTools;

    Map<String,String> menuLink = new HashMap<>();

    @Subscribe
    public void onInit(InitEvent event) {

        // 这里我是手动设置的,你可以从数据库读取。
        menuLink.put("menu1","https://blog.abmcode.com");
        menuLink.put("menu2","https://www.abmcode.com");

        menuLink.forEach((key,value)->{
            SideMenu.MenuItem testMenu = sideMenu.getMenuItemNN(key);
            testMenu.setCommand(item->{
                webBrowserTools.showWebPage(value,null);
            });
        });
    }
}

谢谢了