这是我正在尝试做的事情:
@ViewScoped
JSF bean,我在其中使用Jersey调用JAX-RS服务。image/svg+xml
的回复。到目前为止,我的研究让我相信:
h:graphicImage
(核心JSF)不支持SVG p:graphicImage
(PrimeFaces)不支持SVG o:graphicImage
(OmniFaces)也不支持SVG。是否无法从支持bean向facelets页面提供SVG图像?提供服务SVG图像的服务将在以后扩展,以支持提供(以及其他格式)PNG但我希望直接使用SVG。
答案 0 :(得分:4)
<o:graphicImage>
设置的默认内容类型为image
,但您的浏览器显然没有吞下SVG图片的内容类型。根据{{3}},我为OmniFaces 2.1添加了对<o:graphicImage dataURI="true">
的SVG支持,并且我添加了一个新的type
属性,允许您通过以下方式明确指定图像类型文件扩展名:
<o:graphicImage value="#{bean.image}" type="svg" />
如果它像这样抛出一个IllegalArgumentException
java.lang.IllegalArgumentException:o:graphicImage&#39; type&#39; attribute必须表示有效的文件扩展名。遇到了无效的&#39; svg&#39;。
然后,这意味着您的服务器不会将其识别为已注册的mime映射。然后,您应该将新的mime映射添加到服务器或webapp&#39; web.xml
,如下所示:
<mime-mapping>
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
答案 1 :(得分:0)
我还没试过,但是你可以使用JSF的ui:include
吗?像这样:
<ui:include src="assets/img/fileFromJersey.svg" />