vaadin视频组件是否支持preload属性

时间:2017-06-19 13:37:19

标签: java vaadin vaadin7

我有超过10个mp4视频,我正在使用vaadin视频组件嵌入我的网络应用程序中。当我在Edge / IE上运行我的应用程序时,vidoes工作正常,但在chrome上它们不会。它的已知问题是chrome,如果页面有超过6-8 mp4的视频,它会挂起,因为它试图将所有这些视频预加载到一起。 我想知道视频组件是否提供了将预加载设置为无的选项。我可以看到mediabase有这个选项 https://vaadin.com/api/7.6.7/index.html?com/google/gwt/media/client/MediaBase.html 但我不认为它是视频。 此外,我发现了另一个链接,他们似乎在进行修复https://github.com/vaadin/framework/issues/5178,但无法使其正常工作。

任何帮助?

1 个答案:

答案 0 :(得分:1)

在您的链接中的提交/ PR合并之前,它不会在7或8中。

但是,您可以使用AbstractExtension和AbstractExtensionConnector来完成此任务。

AbstractExtension

package com.my.package;

import com.vaadin.server.AbstractClientConnector;
import com.vaadin.server.AbstractExtension;
import com.vaadin.ui.AbstractComponent;
public class VideoPreloadExtension extends AbstractExtension {

    public VideoPreloadExtension() {
    }

    public VideoPreloadExtension(AbstractClientConnector target) {
        super(target);
    }

    public void extend(AbstractComponent component) {
        super.extend(component);
    }

}

AbstractExtensionConnector

package com.my.package.client;

import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ServerConnector;
import com.vaadin.client.extensions.AbstractExtensionConnector;
import com.my.package.VideoPreloadExtension;
import com.vaadin.shared.ui.Connect;

@Connect(VideoPreloadExtension.class)
public class VideoPreloadConnector extends AbstractExtensionConnector {

    @Override
    protected void init() {
        super.init();
    }

    @Override
    protected void extend(ServerConnector target) {
        // Get the extended widget
        final Widget widget = ((ComponentConnector) target).getWidget();
        widget.getElement().setAttribute("preload","auto");
    }
}

用法如下:

Video image = new Video();
VideoPreloadExtension ext = new VideoPreloadExtension();
ext.extend(image);

一些笔记(因为vaadin有时会很痛苦)

  1. 如果您已经有一个库模块,最好将上面的类添加到其中。
  2. 确认您添加这些类的模块具有以下依赖项添加,以便编译widgetset:

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-client</artifactId>
    </dependency>
    
  3. 请记住,VideoPreloadConnector必须位于以&#34; .client&#34;结尾的包名中。

  4. 以下是来自Chrome工作的检查元素的屏幕截图:

    screenshot of an inspect element from chrome

    HTHS!