【问题标题】:Vaadin Tabsheet undesired refreshing of tab contentVaadin Tabsheet 不希望刷新选项卡内容
【发布时间】:2018-08-16 10:17:13
【问题描述】:

我有一个 Vaadin-TabSheet,它在每个选项卡中都有一个 BrowserFrame。我注意到以下不良行为:当我通过单击更改选项卡时,浏览器框架会重新加载,可能会删除用户在该选项卡中所做的任何输入。

如何防止标签重新加载? tabSheet 有替代品吗?

【问题讨论】:

  • 用按钮模拟标签页,然后设置元素的 setVisible(true/false) 应该可以解决问题
  • 补充一点:这就是 TabSheet 的工作方式。它显示了一个选项卡,并且在更改往返服务器时,新内容将替换旧内容。这不是我们从 jquery 等中知道的常规隐藏内容选项卡。

标签: java tabs vaadin vaadin8


【解决方案1】:

我现在已经构建了自己的 TabSheet。 我尝试在选项卡内容上使用 setVisible,但这也使浏览器框架重新加载。所以我想出了以下代码来改变内容的大小:

private final HorizontalLayout buttons;
private final GridLayout contents;

/**
 * Construct a new MyTabSheet
 */
public MyTabSheet() {
    buttons = new HorizontalLayout();
    contents = new GridLayout();
....

        if(t.isSelected()) {
            selectedComponent = t.getComponent();
        } else {
            t.getComponent().setSizeUndefined();
            t.getComponent().setWidth(0.0f, Unit.PIXELS);
            t.getComponent().setHeight(0.0f, Unit.PIXELS);
        }
    }

    if(null != selectedComponent) {
        String frameHeight;
        if(selectedComponent instanceof BrowserFrame) {
            BrowserFrame bf = (BrowserFrame)selectedComponent;
            frameHeight = (String) bf.getData();
        } else {
            frameHeight = "800px";
        }
        selectedComponent.setSizeFull();
        selectedComponent.setHeight(frameHeight);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    相关资源
    最近更新 更多