我在我的vaadin應用程序中有一個菜單欄,並且想添加一個項目以打開一個pdf文件是瀏覽器的新選項卡。我發現了一些解決方案,用按鈕打開文件,但我必須使用MenuItem ...使用Vaadin從菜單欄打開pdf文件
MenuBar.Command commandHandler = new MenuBar.Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
if (selectedItem.equals(menu_help)) {
openHelp();
}
}
};
...
menu_help = menuBar
.addItem("", WebImageList.getImage(ImageList.gc_helpIcon),
commandHandler);
...
private void openHelp() {
// open pdf-file in new window
}
感謝您的幫助!
SOLUTION:
private void openHelp() {
final String basepath = VaadinService.getCurrent().getBaseDirectory().getAbsolutePath();
Resource pdf = new FileResource(new File(basepath + "/WEB-INF/datafiles/help.pdf"));
setResource("help", pdf);
ResourceReference rr = ResourceReference.create(pdf, this, "help");
Page.getCurrent().open(rr.getURL(), "blank_");
}
注意:此代碼的工作,但代碼的結構是不完美的;-)更好的是存儲「基本路徑」和「PDF」的屬性...
你的類是Component'的'一個子類,或者更確切地說'AbstractClientConnector'。正如Kris所提到的,Component的一個子類仍然需要提供'setResource(「help」,pdf);'函數。因此,如果您在不是「組件」的類中定義「MenuBar」,則需要將其明確附加到組件。 – Abbas 2014-12-01 23:18:51