Jsf 2.0显示位于本地目录中的图像

时间:2013-10-02 12:35:30

标签: jsf-2 jboss7.x

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

我尝试使用<h:graphicImage value="C:/images/abc.jpg" />以及纯HTML标记 <img src="C:/images/abc.jpg" />但上述情况均无效。

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

我正在使用Jboss AS 7.0

2 个答案:

答案 0 :(得分:3)

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

Load images from outside of webapps / webcontext / deploy folder using <h:graphicImage> or <img> tag

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

它对我来说很好。

答案 1 :(得分:1)