无法显示外部主机图像

unable to display external host image

我无法在 JSF 页面上显示外部主机的图像。在我的例子中,它是 Apache 文件服务器。我正在 @RequestScoped bean 中创建图像 URL,然后尝试将其作为 @ViewScoped bean 中的字符串传递给前端。

我尝试过以两种方式显示图像: 首先用 JSF 加载它:

<h:graphicImage name="#{myViewScopedBean.myObject.mainImageUrl}" />

然后使用 html <img> 标签作为参考 answer

之后我尝试打印 myObject 的所有属性。 除 mainImageUrl 外,所有 String 属性都显示良好。我 100% 确定我在后端设置 mainImageUrl

什么会引起这个问题?是否有任何安全 JSF 配置?

<h:graphicImage>name 属性应该表示 JSF 资源名称,而不是 URL。 JSF 资源在其他 How to reference CSS / JS / image resource in Facelets template? 中进行了解释 如果您打算指定一个真实的 URL,那么您应该使用 value attribtue,或者只是简单的 HTML <img>.

所以,要么

<h:graphicImage value="#{myViewScopedBean.myObject.mainImageUrl}" />

<img src="#{myViewScopedBean.myObject.mainImageUrl}" />

如果还是不行,那么显然 URL 是完全错误的。验证生成的 HTML 输出和浏览器的内置 HTTP 流量监视器(按 F12)。您应该能够通过将 URL 直接复制粘贴到浏览器的地址栏中来独立打开图像。