我有一个问题。我正在使用 Struts(Struts 2 框架)开发一个 Web 应用程序。
我为每个用户创建了一个 Freemarker 模板文件并将其保存在
webapps/mail/mailEn/customer.ftl
现在,当页面被调用时,我必须查看customer.ftl所以我尝试在我的java类中像这样照顾它:(当我使用本地目录路径C://......它有效)
MimeBodyPart textBodyPart = null;
try {
textBodyPart = new MimeBodyPart();
Configuration cfg = new Configuration();
//FileTemplateLoader ftl1 = new FileTemplateLoader(new File ("D:/Workspace//Projectname///web///styles/");
FileTemplateLoader ftl1 = new FileTemplateLoader (new File("\\mail\\mailEn")); TemplateLoader[] loaders = new TemplateLoader[] { ftl1 };
MultiTemplateLoader mtl = new MultiTemplateLoader(loaders);
cfg.setTemplateLoader(mtl);
cfg.setObjectWrapper(new DefaultObjectWrapper());
Template template = cfg.getTemplate("customerInfo.ftl");
Map<String, String> rootMap = new HashMap<String, String>();
rootMap.put("image1", "images/LOGO.jpg");
rootMap.put("recipient", "aaaa");
rootMap.put("address", "xxxx");
rootMap.put("contact", "yyyy");
rootMap.put("country", "uuuu");
rootMap.put("sender", "rrrrr");
Writer out = new StringWriter();
template.process(rootMap, out);
textBodyPart.setContent(out.toString(),Constants.TEXT_HTML);
}
使用绝对路径(D:/....)
,它可以正常工作。但这不可能是解决方案,因为当我完成这个网络应用程序时,我将有一个战争文件,它将被放在服务器上,那么绝对路径将是错误的。所以我需要一个始终有效的相对路径!
我现在正在使用 Eclipse。当我尝试使用上面的路径(/../.. ....)时,我正在寻找的文件永远找不到。(我尝试上到项目的主路径,然后到文件所在的文件夹邮件)
我尝试了许多不同的路径,例如 ./web/mail/ 、 ../../../../../web/styles 等等,但我从未找到我要查找的文件。
如果有人能给我提示该怎么做,我将不胜感激!
谢谢!