Jsf 2 JSF2.0显示本地目录中的图像

Jsf 2 JSF2.0显示本地目录中的图像,jsf-2,jboss7.x,Jsf 2,Jboss7.x,我正试图显示放在我机器上某个文件夹中的图像。我有一个xhtml页面,我想在上面显示图像 我尝试过使用以及普通HTML标记 但上述两项都不起作用 此外,我曾尝试将图像放置在WebContent中,并尝试从那里访问它,但仍然徒劳无功 我正在使用Jboss AS 7.0您可以尝试以下方法: 如果你想访问webContent之外的图像,你需要做更多的工作。基本上,您有三种选择:使用servlet、PrimeFaces或OmniFaces。这里也回答了这个问题: 我过去也遇到过同样的问题,我通过使用s

我正试图显示放在我机器上某个文件夹中的图像。我有一个xhtml页面,我想在上面显示图像

我尝试过使用
以及普通HTML标记
但上述两项都不起作用

此外,我曾尝试将图像放置在WebContent中,并尝试从那里访问它,但仍然徒劳无功


我正在使用Jboss AS 7.0

您可以尝试以下方法:


如果你想访问webContent之外的图像,你需要做更多的工作。基本上,您有三种选择:使用servletPrimeFacesOmniFaces。这里也回答了这个问题:

我过去也遇到过同样的问题,我通过使用servlet解决了这个问题。我是这样定义的

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;

@WebServlet("/images/*")
public class ImageServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String filename = request.getPathInfo().substring(1);
    File file = new File("C:Images/", filename);
    response.setHeader("Content-Type", getServletContext().getMimeType(filename));
    response.setHeader("Content-Length", String.valueOf(file.length()));
    response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
    Files.copy(file.toPath(), response.getOutputStream());
}
}

然后,如果您想显示您使用的
C:/images/abc.jpg

<h:graphicImage value="/images/abc.jpg" />


这对我来说很好。

尝试将图像存储在/resources/images中。

尝试将图像存储在/resources/images中。我尝试过这个示例,效果很好,但我无法理解为什么需要将图像放在src文件夹中的resources/images中。如果我将它们放在其他地方,如webContent/images中,src文件夹之外,这是因为jsf有一个默认的图像文件目录。如果您将它放在那里,jsf将搜索它。顺便说一句,如果您使用Maven,src也是您需要的每个资源的默认目录,您的应用程序的根目录将是src/main/webapp。@XtremeBiker我成功地执行了它,而没有将它放在resources文件夹中。问题是,我没有添加
.xhtml
,这就是为什么xhtml中的图像标记没有得到解析。如果问题在其他地方也得到了回答,那么在Stackoverflow中最好将问题标记为重复(在close/flag下)。