0

問題が 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 など、さまざまなパスを試しましたが、探しているファイルが見つかりませんでした。

誰かが私に何をすべきかヒントを与えることができれば、私はとても感謝しています!

ありがとうございました!

4

3 に答える 3