3

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

我尝试过使用<h:graphicImage value="C:/images/abc.jpg" />纯 HTML 标记 <img src="C:/images/abc.jpg" />,但以上都不起作用。

此外,我尝试将图像放在 WebContent 中并尝试从那里访问它,但仍然徒劳无功。我哪里出错了?

我正在使用 Jboss AS 7.0

4

2 回答 2

4

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

使用 <h:graphicImage> 或 <img> 标签从 webapps / webcontext / deploy 文件夹外部加载图像

我过去也遇到过同样的问题,我通过使用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" />

它对我来说很好。

于 2016-10-20T08:38:24.697 回答
1

你可以试试这个:

http://www.mkyong.com/jsf2/jsf-2-graphicimage-example/

于 2013-10-02T14:20:25.540 回答