【问题标题】:how to load a svg in gwt widget from an url如何从 url 加载 gwt 小部件中的 svg
【发布时间】:2013-11-04 23:32:04
【问题描述】:

我有一个提供 png 和 svg 图像的 servlet。使用 png 我没有问题:

Image image = new Image(GWT.getHostPageBaseURL() + token);

但是如何让 svg 工作呢?我已经将“lib-gwt-svg”添加到我的依赖项中。有一个 SVGImage 类:

SVGImage svg = new SVGImage(OMSVGParser.parse(???));

解析需要一个字符串。有没有办法从 URL 加载原始字符串?

或者如何让它工作(有或没有“lib-gwt-svg”)?

更新: thx to Andrei Volgin:他指出它应该与“Image”一起使用,并且确实如此(我只需将mime类型更正为“image/svg+xml”)。但是 svg-image 中的脚本不能以这种方式工作(看起来图像被渲染为普通的位图图像)。 我需要将图像呈现为 svg(带有脚本)。

【问题讨论】:

    标签: gwt svg


    【解决方案1】:

    如果您使用 URL 加载图像,则根本不需要任何库。而且您不需要 servlet 来交付它们。只需将图像添加到您的 /war/images 文件夹即可。然后,在您的 GWT 代码中:

    Image image = new Image();
    image.setUrl("images/myImage.svg");
    myPanel.add(image);
    

    您可能希望为不支持 svg 文件的浏览器添加一些逻辑。

    【讨论】:

    • thx 这几乎是完美的:但由于某种原因,svg 中的脚本(悬停效果)不起作用。 (在检查生成的代码时,我看不到 svg 代码 - 看起来我添加了正常图像)
    【解决方案2】:

    我找到了一个无需任何外部库(如 Andrei 的解决方案)即可工作的解决方案,但也可以让嵌入式脚本正常工作。我使用了来自here 的信息 - 我使用了 HTMLPanel 并通过“RequestBuilder”加载了图像:

        String url = GWT.getHostPageBaseURL() + link.getToken();
        RequestBuilder rB = new RequestBuilder(RequestBuilder.GET, url);
        rB.setCallback(new RequestCallback() {
    
            @Override
            public void onResponseReceived(Request request, Response response) {
                //create Widget
                chartImage = new HTMLPanel(response.getText());
                //add to layout   
                layout.add(chartImage);
    
            }
    
            @Override
            public void onError(Request request, Throwable exception) {
                // TODO Auto-generated method stub
    
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多