gpt4 book ai didi

jsf - 如何使用 JSF/OmniFaces/PrimeFaces 嵌入 SVG 图像?

转载 作者:行者123 更新时间:2023-12-02 17:34:39 26 4
gpt4 key购买 nike

这是我正在尝试做的事情:

  1. 我有一个 @ViewScoped JSF bean,我在其中使用 Jersey 调用 JAX-RS 服务。
  2. 我请求的资源返回内容类型为 image/svg+xml 的响应。
  3. 在 Facelet 页面中显示它。

到目前为止,我的研究让我相信:

  • h:graphicImage (Core JSF) 不支持SVG
  • p:graphicImage (PrimeFaces) 不支持 SVG
  • o:graphicImage (OmniFaces) 也不支持 SVG。

没有办法从支持 bean 将 SVG 图像传递到 facelets 页面吗?提供 SVG 图像的服务稍后将扩展以支持传递(以及其他格式)PNG,但我希望直接使用 SVG。

最佳答案

<o:graphicImage> 设置默认内容类型 image ,但您的浏览器显然没有为 SVG 图像吞下它。根据 this commit ,我为 OmniFaces 2.1 添加了对 <o:graphicImage dataURI="true"> 的 SVG 支持我添加了一个新的 type允许您通过文件扩展名明确指定图像类型的属性:

<o:graphicImage value="#{bean.image}" type="svg" />

万一它抛出 IllegalArgumentException像这样

java.lang.IllegalArgumentException: o:graphicImage 'type' attribute must represent a valid file extension. Encountered an invalid value of 'svg'.

那么这意味着您的服务器无法将其识别为已注册的 mime 映射。然后你应该添加一个新的 mime 映射到服务器或 webapp 的 web.xml如下:

<mime-mapping>
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>

关于jsf - 如何使用 JSF/OmniFaces/PrimeFaces 嵌入 SVG 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com