Networking 将图像从本地网络显示到JSF Web应用程序

Networking 将图像从本地网络显示到JSF Web应用程序,networking,jsf-2,datatable,local,Networking,Jsf 2,Datatable,Local,我在本地网络中有一些图像文件,我想在JSF的DataTable中显示它们。我正在使用JSF2.0和Tomahawk 1.1.13。下面是JSF代码 <t:dataTable newspaperColumns="3" value="#{startupBean.colorList}" newspaperOrientation="horizontal" var="colorBO"> <f:facet name="spacer"> <f:ve

我在本地网络中有一些图像文件,我想在JSF的DataTable中显示它们。我正在使用JSF2.0和Tomahawk 1.1.13。下面是JSF代码

    <t:dataTable newspaperColumns="3" value="#{startupBean.colorList}"     newspaperOrientation="horizontal" var="colorBO">

    <f:facet name="spacer">
   <f:verbatim></f:verbatim>
   </f:facet>
   <h:column>
    <h:graphicImage id="colors" alt="jsf-sun" url="#{colorBO.color_url}"> 
    </h:graphicImage>
    </h:column>
    </t:dataTable>

在我的支持bean中,我将文件的路径设置为“\\root\sub\sub\xxx.jpg”。但是当JSF页面呈现时,它会显示一个默认图标。当我右键单击图标并检查属性时,下面是我得到的


我尝试在路径名中同时使用反斜杠和正斜杠。但输出没有变化。我不知道http部分是如何进入文件路径的。我肯定错过了一些东西。

你在这里犯了一个概念上的错误。一旦遇到
元素,webbrowser必须通过有效且可访问的URL单独下载图像,而不是webserver必须以某种方式将本地磁盘文件系统中的图像神奇地嵌入返回webbrowser的HTML页面中

您需要通过一个有效且可访问的URL使图像可用,以便webbrowser可以下载它。本地磁盘文件系统路径肯定不是有效且可访问的URL。更重要的是,如果服务器机器的本地磁盘文件系统内容自动完全暴露在万维网中,这将是一个巨大的安全漏洞

解决这个问题的一个最简单的方法就是将图像放在公共webcontent中(JSF文件也在那里),这样它就可以在web上使用

另一种方法是将服务器配置为将文件夹发布到web中,以便通过特定URL也可以使用该文件夹。目前还不清楚您使用的是哪台服务器,因此这里只是一个Tomcat示例:

另见:

能否请您更精确一点:呈现的
标记是什么样子的?您希望它是什么样子的?谢谢BalusC!我用的是tomcat,你的解决方案对我很有效。谢谢你抽出时间。
<Context docBase="/root/sub/sub" path="/images" />
<h:graphicImage src="/images/xxx.jpg" />