Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 如何在用户详细信息中显示动态照片';s页_Jsf 2_Path_Primefaces_Graphicimage - Fatal编程技术网

Jsf 2 如何在用户详细信息中显示动态照片';s页

Jsf 2 如何在用户详细信息中显示动态照片';s页,jsf-2,path,primefaces,graphicimage,Jsf 2,Path,Primefaces,Graphicimage,可能重复: 我想从存储在数据库中的url中显示一张照片,因此我使用了如下方法 <h:panelGrid columns="1"> <p:graphicImage value="#{userController.photo}"/> </h:panelGrid> system.out.println显示图像的正确路径,但在显示页面中不显示照片, 因此,任何

可能重复:

我想从存储在数据库中的url中显示一张照片,因此我使用了如下方法

                <h:panelGrid columns="1">
                    <p:graphicImage value="#{userController.photo}"/> 
                </h:panelGrid>
system.out.println显示图像的正确路径,但在显示页面中不显示照片, 因此,任何想法???

首先,
新文件(“”)。getAbsolutePath()
返回当前工作目录。即,在发出启动服务器的命令时打开的本地磁盘文件系统目录。此值不能保证每次启动服务器时都相同。这取决于服务器的启动方式。例如,在IDE中,或在命令控制台中,或通过服务等

您绝对不应该让您的业务逻辑依赖于这种环境不一致

其次,生成的HTML必须指向URL(HTTP路径),而不是本地磁盘文件系统路径。也就是说,网络浏览者必须通过类似
URL的URL单独下载图像http://example.com/contextname/images/foo.png
(因此,Web服务器不必自动将它们嵌入HTML代码中)。只有当
新文件(“”
指向已部署webapp的公共web内容文件夹时,当前的代码方法才会起作用,这是非常非常不可能的

您应该确保
指向有效的HTTP URL,即您可以复制粘贴到webbrowser地址栏中的URL


现在还不清楚你为什么会这样设计,你的业务限制是什么,所以不可能给出一个合适的答案来正确解决这个问题。这里有几个链接显示了(轻微的)不同的解决方法:


解决方案很简单,照片的路径位于netbeans项目(project\build\web\photo)的web文件夹下


照片的名字包括分机。

我的两分钱。使用图像URL可能会将您的目录结构暴露给带有
firebug
或类似内容的任何人。因此,可能会发生许多不好的事情,如果我能帮助的话,我不喜欢使用与应用服务器文件系统相关的文件路径。如果您的实现支持它,我建议您使用primefaces从数据库中提供图像。

这可能对yoy“有效”,但这是不可靠的。请看巴卢斯的答案。你完全走错方向了。请在为时已晚之前停止(一旦您将如此重大的概念性错误带入生产环境,您肯定会被窃听/解雇)。+1因为“您绝对不应该让您的业务逻辑依赖于如此不一致的环境。”OP还可以使用动态映像(如果它们存储在磁盘上)。我也对安全问题持怀疑态度。
public String getPhoto() {
   String path = new File("").getAbsolutePath();
   ph =ejbPhoto.find(current.getIdPhoto()); 
   System.out.println("+PHOTO +++++++++++++++"+path+"\\"+ph.getPhotoName()); 
   return path+"\\"+ph.getPhotoName();
}
<h:panelGrid columns="1" width="50%" >
                    <p:graphicImage value="/photo/#{userController.photo}"/> 
  </h:panelGrid>
public String getPhoto() {

   ph =ejbPhoto.find(current.getIdPhoto()); 
   if(ph==null) return "noPhoto.png";
   System.out.println(ph.getPhotoName()); 
   current=null;
    return ph.getPhotoName();
}