
[英]Display dynamic image from database or remote source with p:graphicImage and StreamedContent
[英]Image is unnecessarily displayed on <p:graphicImage> event though the image name from the resources directory is not given
我已经将一些图像存储在webroot\\resources\\fileUpload\\product_image\\thumb
目录下,以便可以按以下方式将这些图像显示在<p:graphicImage>
。
<p:graphicImage library="fileUpload"
name="product_image/thumb/13850470212653732655006325945389_4921.jpg"
alt="Whatever the product name is."/>
如果未提供图像名称即13850470212653732655006325945389_4921.jpg
,则不应显示该图像,但会显示来自给定URL的图像。
<p:graphicImage library="fileUpload"
name="product_image/thumb/"
alt="Whatever the product name is."/>
Web浏览器上的图像URL如下所示。
/webroot/javax.faces.resource/product_image/thumb/.jsf?ln=fileUpload&v=13850470212653732655006325945389_4921
它如何拾取图像?
如果资源文件名与\\d+(_\\d+)
匹配,则将其识别为版本化资源。 这是一个很少使用的功能( 资源库版本控制更为常见)。 具体而言,您可以具有以下结构:
WebContent
|-- resources
| `-- js
| `-- script.js
| |-- 1_0.js
| |-- 1_1.js
| `-- 1_2.js
:
(是的, script.js
是这里的文件夹名称)
并在声明时如下所示:
<h:outputScript name="js/script.js" />
然后自动将最新的1_2.js
用作以下生成的HTML输出,并提供/context
的上下文路径和*.xhtml
的JSF映射:
<script type="text/javascript" src="/context/javax.faces.resource/scripts/script.js.xhtml?v=1_2"></script>
所有这些都在JSF规范的 2.6.1.3章中指定。
但是,您可能会遇到一些不幸的情况,即使用无扩展名的文件夹使用带斜杠的后缀作为资源名称,这应该是IMO失败的,但Mojarra显然也接受它。
如果要避免这种现象,则需要使用其他模式作为文件名。 例如,使用-
而不是_
或使用_
作为前缀或后缀,或至少引入一个字母字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.