如何从URL中加载swt gwt小部件中的svg

时间:2012-10-12 12:18:25

标签: gwt svg

我有一个提供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”)?

更新 对安德烈·沃尔金来说:他指出它应该与“图像”配合使用它(我只需将mime类型更改为“image / svg + xml”)。但是svg-image中的脚本不能以这种方式工作(看起来图像呈现为普通的位图图像)。 我需要将图像呈现为svg(带脚本)。

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

我找到了一个没有任何外部库(如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

        }
    });