FreeMarker文件路径

时间:2016-02-14 20:45:02

标签: java jetty freemarker

我有一些问题让freeMarker获取我的根目录。我已经尝试了一些其他线程中找到的答案,但它们似乎并没有起作用。每次我得到一个FileNotFound异常。 当我在IDEA中运行项目时它运行良好但是当我将它打包到war文件并部署到服务器时,我得到了异常。 至于war文件,它的打包方式使得我需要服务的html内容位于root directry(与WEB-INF在同一目录中)。我已经尝试将模板加载的目录设置为不同的值,但它返回相同的结果

这是我的代码:

    public class PageGenerator {
        private static PageGenerator pageGenerator;
        private final Configuration cfg;

        public static PageGenerator instance() {
            if (pageGenerator == null) {
                pageGenerator = new PageGenerator();
            }
            return pageGenerator;
        }

        public String getPage(String filename, Map<String, Object> data) {
            Writer stream = new StringWriter();
            try {
                Template template = cfg.getTemplate(filename);
                template.process(data, stream);


            } catch (Exception e) {
                e.printStackTrace();
            }
            return stream.toString();
        }

        private PageGenerator() {
            cfg = new Configuration();
            String basedir = System.getProperty("user.dir");
            try {
                cfg.setDirectoryForTemplateLoading(new File(basedir+"/"));
                System.out.println("\n\n" + "This is the system base directory" + "\n" +basedir+"\n\n");
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该使用cfg.setServletContextForTemplateLoading(servletContext, null)。部署的Web应用程序可能不会被Servlet容器公开为普通目录。