带有表格的Vaadin 7中的弹出式打印窗口



我是Vaadin的新手。如何将表组件传递到Vaadin 7中的新弹出屏幕?假设我已经使用 com.vaadin.ui.Table 创建了表。

aaa = 新表();

目前Vaadin教程仅显示如何在不传递组件/数据的情况下创建打印弹出窗口。基于以下代码

public static class PrintUI extends UI {
    @Override
        protected void init(VaadinRequest request) {
        // Have some content to print
        setContent(new Label(
            "<h1>Here's some dynamic content</h1>n" +
            "<p>This is to be printed.</p>",
            ContentMode.HTML));
        // Print automatically when the window opens
        JavaScript.getCurrent().execute(
            "setTimeout(function() {" +
            "  print(); self.close();}, 0);");
    }
}
...
// Create an opener extension
BrowserWindowOpener opener =
        new BrowserWindowOpener(PrintUI.class);
opener.setFeatures("height=200,width=400,resizable");
// A button to open the printer-friendly page.
Button print = new Button("Click to Print");
opener.extend(print);

如果有人能告诉我如何将表 aaa 传递到 PrintUI 类中,我将不胜感激。

Window window = new Window("my test table popup");
window.setContent(table); 
window.setModal(true);
getUI().addWindow(window);

我发现在弹出窗口中将对象传递给 UI 类的唯一方法是将它们存储在会话中:

    Table table = new Table();
    VaadinSession.getCurrent().setAttribute("table", table);

在弹出窗口中:

    Table t = (Table) VaadinSession.getCurrent().getAttribute("table");
您还可以

PrintUI类中初始化Table。如果您需要初始化特定的Table实例,则可以通过.getParameter("idTable")将表ID参数传递给UI(最终,这就像向URL添加GET参数一样),然后在PrintUIinit()方法中通过带有.getParameter("idTable")的请求参数检索它。

最新更新