問題が 1 つあります。私はStruts(Struts 2 Framework)を使用して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:/....)
で問題なく動作します。しかし、これは解決策にはなりません。なぜなら、この Web アプリケーションを完成させると、war ファイルがサーバーに置かれ、絶対パスが間違っているからです。したがって、常に機能する相対パスが必要です!
現在、Eclipse を使用しています。上記のパス (/../.. ....) を使用しようとすると、探しているファイルが見つかりません。(プロジェクトのホームパスに移動してから、ファイルがあるフォルダーmailに移動しようとしました)
./web/mail/ 、 ../../../../../web/styles など、さまざまなパスを試しましたが、探しているファイルが見つかりませんでした。
誰かが私に何をすべきかヒントを与えることができれば、私はとても感謝しています!
ありがとうございました!