使用MenuBar.Command在新窗口中打开链接

时间:2014-10-17 09:35:55

标签: java vaadin vaadin7

我的VAADIN应用程序中有一个MenuBar,在这个MenuBar中我有一个指向我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 menuBar = new MenuBar();

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

问题是,我无法在新标签页中打开链接,它只在弹出窗口中打开,默认情况下几乎在所有网络浏览器中都被阻止。

有没有办法在另一个标签中打开我的链接,而不是在我的MenuBar中弹出窗口?

1 个答案:

答案 0 :(得分:0)

我认为这可能就是你要找的...... 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);
}

}