1

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

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

4

2 回答 2

4

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

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

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

于 2012-10-12T17:38:36.413 回答
0

我找到了一个无需任何外部库(如 Andrei 的解决方案)即可工作的解决方案,但也可以保持嵌入式脚本正常工作。我使用了这里的信息- 我使用了 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

        }
    });
于 2012-10-15T10:45:10.013 回答