2012-10-12 44 views
1

我有一個servlet,提供png和svg圖像。與PNG我沒有問題:如何從URL加載gwt小工具svg

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

但如何讓svg工作?我已經將「lib-gwt-svg」添加到了我的依賴項中。有一個SVGImage類:

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

解析需要一個字符串。有沒有辦法從URL加載原始字符串?

或如何讓它工作(有或沒有「lib-gwt-svg」)?

更新: THX安德烈沃爾金:他指出,應該以「形象」的工作和它(我不得不糾正,MIME類型爲「圖像/ SVG + XML」)。但是svg-image中的腳本不能以這種方式工作(它看起來就像是一個普通的位圖圖像)。 我需要將圖像呈現爲svg(帶腳本)。

回答

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 

     } 
    }); 
4

如果您使用URL加載圖像,則根本不需要任何庫。你不需要一個servlet來傳遞它們。只需將圖像添加到您的/ war/images文件夾即可。然後,在你的GWT代碼:

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

您可能要增加一些邏輯,不支持SVG文件的瀏覽器。

+0

THX這是工作幾近完美:但是出於某種原因,SVG中的腳本(懸停效果)不起作用。 (關於檢查生成的代碼,我看不到svg代碼 - 它看起來像我添加了一個正常的圖像) – dermoritz

+0

瀏覽器支持svg各不相同。看一下:http://caniuse.com/#cats=SVG –