Java JSF/primefaces在代码外显示图像-图像位置?

Java JSF/primefaces在代码外显示图像-图像位置?,java,jsf,primefaces,Java,Jsf,Primefaces,我将JSF与primefaces一起使用,并希望显示来自java代码的图像 我已经看过了关于 但我不清楚如何正确获取图像文件的路径: 代码: 豆子: xhtml: <p:graphicImage value="#{ABean.bStatus}" /> 返回: java.io.FileNotFoundException:\images\reddot.png 我希望在显示我的图像时,在哪里存储我的图像以及如何进行存储方面有最佳做法。创建您的StreamedContent,如下所示:

我将JSF与primefaces一起使用,并希望显示来自java代码的图像

我已经看过了关于

但我不清楚如何正确获取图像文件的路径:

代码:

豆子:

xhtml:

<p:graphicImage value="#{ABean.bStatus}" />

返回:

java.io.FileNotFoundException:\images\reddot.png


我希望在显示我的图像时,在哪里存储我的图像以及如何进行存储方面有最佳做法。

创建您的
StreamedContent
,如下所示:

bStatus = new DefaultStreamedContent(FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/images/greendot.png"), "image/jpeg");

创建
新文件()
时,这将是磁盘中的绝对路径,而不仅仅是应用程序中的路径。

创建
流式内容,如下所示:

bStatus = new DefaultStreamedContent(FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/images/greendot.png"), "image/jpeg");

创建
新文件()
时,这将是磁盘中的绝对路径,而不仅仅是应用程序中的路径。

由于图像位于web文件夹中,因此实际上不需要使用DefaultStreamedContent。对于动态生成的图像,我只保留

对于您的情况,我只需要创建一个简单的方法,根据布尔变量返回图像路径(在您的web文件夹中)。大概是这样的:

public String getImagePath(){
    return connected ? "/images/greendot.png" : "/images/reddot.png";
}
在graphicImage上,您可以参考:

<p:graphicImage value="#{yourBean.imagePath}"/>

请注意,如果web上下文不是root,则可能必须调整graphicImage标记

编辑 实际上,您可以让这更简单:

 <p:graphicImage value="#{yourBean.connected ? '/images/greendot.png' : '/images/reddot.png'}"/>


只需确保已连接属性有一个getter即可。

因为您的图像位于web文件夹中,所以实际上不需要使用DefaultStreamedContent。对于动态生成的图像,我只保留

对于您的情况,我只需要创建一个简单的方法,根据布尔变量返回图像路径(在您的web文件夹中)。大概是这样的:

public String getImagePath(){
    return connected ? "/images/greendot.png" : "/images/reddot.png";
}
在graphicImage上,您可以参考:

<p:graphicImage value="#{yourBean.imagePath}"/>

请注意,如果web上下文不是root,则可能必须调整graphicImage标记

编辑 实际上,您可以让这更简单:

 <p:graphicImage value="#{yourBean.connected ? '/images/greendot.png' : '/images/reddot.png'}"/>


只需确保已连接属性有一个getter即可。

您的图像实际位于何处?我的图像位于WebContent/images/-但我也愿意使用新结构来存储我的图像以供java代码使用。您的图像实际位于何处?我的图像位于WebContent/images/-但我也愿意使用新结构来存储我的图像用于java代码使用的图像。感谢提供最佳实践!如果我的位置上有像
D:/Images
这样的图像,那么我如何获得?您能给我一些提示吗?@Yubaraj除非您的web服务器配置为提供来自d:/Images的文件,否则您将无法将p:graphicImage指向该文件夹。您需要编写一个servlet,将请求读取到特定的URL(即/public/images),并将这些请求映射到D:/images文件夹中的文件。好运气,感谢您的最佳实践!如果我的位置上有像
D:/Images
这样的图像,那么我如何获得?您能给我一些提示吗?@Yubaraj除非您的web服务器配置为提供来自d:/Images的文件,否则您将无法将p:graphicImage指向该文件夹。您需要编写一个servlet,将请求读取到特定的URL(即/public/images),并将这些请求映射到D:/images文件夹中的文件。感谢你简洁地回答我的问题!谢谢你简洁地回答我的问题!