Jakarta ee 如何将动态生成的SVG包含到Vaadin UI中?

Jakarta ee 如何将动态生成的SVG包含到Vaadin UI中?,jakarta-ee,svg,vaadin,Jakarta Ee,Svg,Vaadin,我想知道在vaadin7.0.5中是否可以在vaadinui中包含SVG图形,而不需要任何附加组件 我目前正在使用此代码 StreamResource ressourceSVG = new StreamResource(source, "graphe.svg"); Embedded embedded = new Embedded("SVG", ressourceSVG); embedded.setType(Embedded.TYPE_OBJECT); embedded.setMimeType(

我想知道在vaadin7.0.5中是否可以在vaadinui中包含SVG图形,而不需要任何附加组件

我目前正在使用此代码

StreamResource ressourceSVG = new StreamResource(source, "graphe.svg");

Embedded embedded = new Embedded("SVG", ressourceSVG);
embedded.setType(Embedded.TYPE_OBJECT);
embedded.setMimeType("images/svg+xml");

verticalLayout.addComponent(embedded);
setContent(verticalLayout);
有了这个,什么也没发生。。。浏览器中仅显示“SVG”文本的外观

我在这个问题上找到的唯一一本书是3年前的,在书中找不到任何线索

在API中只存在接口:但它并没有真正的帮助


如果你们有任何线索。。。这太好了

因此,答案似乎是,要在Vaadin 7中显示SVG,应该使用BrowserFrame来显示SVG资源

使用如下类似的方法,其中sourceSVG是包含SVG数据的streamSource

StreamResource ressourceSVG = new StreamResource(sourceSVG, "graphe.svg");

BrowserFrame embedded = new BrowserFrame("SVG", ressourceSVG);

verticalLayout.addComponent(component);
verticalLayout.addComponent(embedded);
setContent(verticalLayout);

加载网页后必须重新加载框架,但最终还是成功了

实际上,至少在
7.1.7版
中,您可以直接将
嵌入式
与SVG一起使用。中甚至有一个例子,尽管它涉及
ThemeResource

// A resource reference to some object
Resource res = new ThemeResource("img/reindeer.svg");

// Display the object
Embedded object = new Embedded("My SVG", res);
object.setMimeType("image/svg+xml"); // Unnecessary
layout.addComponent(object);
但是,
StreamResource
s也可以正常工作,至少对于以下代码段:

Embedded image = new Embedded();
image.setMimeType("image/svg+xml"); //also unnecessary here :p
layout.addComponent(image);
StreamSource source = //define your source
image.setSource(new StreamResource(source, "image.svg"));

(请注意,如果需要重新生成图像,则必须为
流资源
提供一个新的、唯一的
文件名
值)

会发生什么?什么没有发生?@nexus唯一发生的事情是SVG文本的外观。在生成的HTML中,我只有由该元素生成的“SVG”文本。如果使用TYPE_IMAGE或TYPE_BROWSER而不是TYPE_OBJECT,会发生什么?还没有尝试使用TYPE_BROWSER,但TYPE_IMAGE已被弃用,我尝试了vaadin类IMAGE,它是TYPE_IMAGE的替代品,但不起作用。由于TYPE_BROWSER也不推荐使用,我将尝试使用ew BrowserFrame类,它应该是相同的。BrowserFrame类使其工作。感谢您的提示,我将在更新我的vaadin应用程序时尝试记住它