使用primefaces从外部项目目录显示图像

时间:2014-11-28 11:21:23

标签: jsf jsf-2 primefaces

我是Primefaces的新手,我正在做一个项目,我需要从项目目录外显示多个图像。让我想我的C目录中有一个名为image的文件夹,我的图像文件夹中有多个子文件夹。我需要使用p:gallery of primefaces显示特定子文件夹中的所有图像。

我已经检查了一些使用示例,但我没有找到它的任何输出。请帮我解决一下。

我使用了以下编码

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

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

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



        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws            ServletException, IOException {


            try
            {
            String filename = request.getPathInfo().substring(1);
            System.out.println("path is"+filename);
            File file = new File("D:/images/", filename);
            response.setHeader("Content-Type", getServletContext().getMimeType(filename));
            response.setHeader("Content-Length", String.valueOf(file.length()));
            response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
            System.out.println("out put path"+file.toPath());
            Files.copy(file.toPath(), response.getOutputStream());
            }
            catch(Exception e)
            {
                System.out.println("Exception is"+e.toString());
            }
        }

    }

和我写的页面

    <h:graphicImage value="/images/filename.ext" />

但我得到了以下异常

path isfilename.ext

输出路径

        D:\images\filename.ext

例外是

      java.nio.file.NoSuchFileException: D:\images\filename.ext

请给出任何建议

1 个答案:

答案 0 :(得分:0)

here你可以找到一个完整的FileServlet类(你的遗失了几个主要的东西)。

在修改FileServlet.java以适合您的目的后,您应该使用

<p:graphicImage height="???" width="???"rendered="???" value="yout/path/#{image}" cache="????" />

页面