【问题标题】:Open link in a new window using MenuBar.Command使用 MenuBar.Command 在新窗口中打开链接
【发布时间】:2014-10-17 09:35:54
【问题描述】:

我的 VAADIN 应用程序中有一个菜单栏,在这个菜单栏中我有一个指向我的 wiki 的链接:

Wiki = new Link();
        Wiki.setCaption("Wiki");
        Wiki.setStyleName("mypicto");
        Wiki.setImmediate(true);
        Wiki.setSizeUndefined();
        Wiki.setIcon(iconWiki);

使用命令:

MenuBar.Command wikiLink = new MenuBar.Command() {

            public void menuSelected(MenuItem selectedItem) {
                getUI().getPage().open("url_to_wiki","_blank");
            }
        };

然后我在菜单栏中添加链接和命令

MenuBar menuBar = new MenuBar();

menuBar.addItem("Wiki",iconWiki, wikiLink);

问题是,我无法在新选项卡中打开链接,它只能在弹出窗口中打开,几乎所有网络浏览器都默认阻止该链接。

有没有办法在另一个选项卡中打开我的链接,而不是在我的菜单栏中打开我的链接?

【问题讨论】:

标签: java vaadin vaadin7


【解决方案1】:

我想这可能就是你要找的……https://vaadin.com/directory#addon/activelink

这个插件让我在新标签页中打开一个页面。我使用 Vaadin 7 Cookbook 中的代码对其进行了测试。

@SuppressWarnings("serial")
public class DemoActiveLink extends UI {

@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = DemoActiveLink.class)
public static class Servlet extends VaadinServlet {
}

@Override
public void init(VaadinRequest request) {
    ActiveLink link = new ActiveLink("Vaadin", new ExternalResource(
            "http://vaadin.com"));
    link.setTargetName("_blank");
    link.addListener(new LinkActivatedListener() {
        public void linkActivated(LinkActivatedEvent event) {
            Notification.show("Link was opened in a new window.");
        }
    });

    setContent(link);
  }
}

&

@SuppressWarnings("serial")
public class DemoButtonLink extends UI {

@Override
public void init(VaadinRequest request) {
    Button button = new Button("Vaadin");
    button.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            getPage().open("http://vaadin.com", "Vaadin");
        }
    });
    button.setStyleName(Reindeer.BUTTON_LINK);
    setContent(button);
}

}

【讨论】:

  • 你可能需要也可能不需要:" @WebServlet(value = "/*", asyncSupported = true) @VaadinServletConfiguration(productionMode = false, ui = DemoActiveLink.class) public static class Servlet extends VaadinServlet { } " 这适用于我的设置。
  • 我认为这是解决方案,但不,我需要它在 menubar.Command 中,而不是在按钮或 activeLink 中
猜你喜欢
  • 2015-02-09
  • 2012-04-11
  • 2013-12-04
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 2015-09-13
相关资源
最近更新 更多