struts2的action中写了这样加载模板文件的代码,1 Configuration cfg=new Configuration();
2 cfg.setClassForTemplateLoading(NewsAction.class,"WEB-INF/templates");
3 try {
4 Template t = cfg.getTemplate("news.ftl");
5 } catch (IOException ex) {
6 ex.printStackTrace();
7 }在第4行处总是提示找不到news.ftl模板文件的错误,报错代码如下:
java.io.FileNotFoundException: Template news.ftl not found.请问这个该如何解决呢,之前放到系统根目录下读取就没有问题,因为涉及安全的问题,所以要放到WEB-INF目录下,换了目录后就读取不到了。
2 cfg.setClassForTemplateLoading(NewsAction.class,"WEB-INF/templates");
3 try {
4 Template t = cfg.getTemplate("news.ftl");
5 } catch (IOException ex) {
6 ex.printStackTrace();
7 }在第4行处总是提示找不到news.ftl模板文件的错误,报错代码如下:
java.io.FileNotFoundException: Template news.ftl not found.请问这个该如何解决呢,之前放到系统根目录下读取就没有问题,因为涉及安全的问题,所以要放到WEB-INF目录下,换了目录后就读取不到了。
1 Configuration cfg=new Configuration();
2 cfg.setClassForTemplateLoading(NewsAction.class,"/WEB-INF/templates");
3 try {
4 Template t = cfg.getTemplate("news.ftl");
5 } catch (IOException ex) {
6 ex.printStackTrace();
7 }
1 Configuration cfg=new Configuration();
2 cfg.setClassForTemplateLoading(NewsAction.class,ServletActionContext.getServletContext().getRealPath("/WEB-INF/templates"));
3 try {
4 Template t = cfg.getTemplate("news.ftl");
5 } catch (IOException ex) {
6 ex.printStackTrace();
7 }
因此,除非你在服务端通过JSP或Servlet将这个目录下的文件读入并输出其内容到客户端,你在WEB-INF目录下的内容是不能被访问到的。建议你在应用根目录下建立一个新目录来解决你的问题.而不要在/WEB-INF下。
还有,ganglong99,如果模板文件不放到web-inf下,那么在ie下就能访问到模板文件,这样是不安全的,所以才要放到那里。
cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext().getRealPath("/"), "/WEB-INF/templates");
cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "/WEB-INF/templates");