Что-то не так, и это очень расстраивает. На домашней странице speed я прочитал, что при запуске веб-приложения должны быть установлены некоторые свойства. И я сделал это, но независимо от того, что я делаю, я продолжаю получать ту же ошибку.
Здесь я устанавливаю реквизиты и использую скорость
public class ConfirmationMailGenerator implements MailGenerator {
private BasicUser user;
private String htmlTemplate = "HTMLConfirmationMailTemplate.vsl";
private String plainTemplate = "PlainConfirmationMailTemplate.vsl";
public ConfirmationMailGenerator(BasicUser user) {
this.user = user;
}
public StringWriter generateHTML() throws Exception {
Properties props = new Properties();
props.setProperty("resource.loader", "wepapp");
props.setProperty("webapp.resource.loader.class", "org.apache.velocity.tools.view.WebappResourceLoader");
props.setProperty("webapp.resource.loader.path", "/WEB-INF/mailtemplates/");
VelocityEngine engine = new VelocityEngine(props);
VelocityContext context = new VelocityContext();
engine.init();
Map map = createDataModel();
context.put("user", map);
Template template = engine.getTemplate(htmlTemplate);
StringWriter writer = new StringWriter();
template.merge(context, writer);
return writer;
}
...
}
. Файлы, конечно, сохраняются в / WEB-INF / mailtemplates /.
Если я использую это, я получаю эту ошибку:
SEVERE: ResourceManager : unable to find resource 'HTMLConfirmationMailTemplate.vsl' in any resource loader.
SEVERE: The log message is null.
Спасибо за ваше время:)
Вы используете Webapp resourceloader, который предназначен для страниц, обслуживаемых сервлетом Velocity Tools. (Он требует некоторой специальной инициализации, чтобы найти корень контекста сервлета).
Я рекомендую использовать ClasspathResourceLoader, а затем поместить файлы в WEB-INF/classes или в другое место в вашем classpath. Это действительно самый простой подход.
resource.loader = class
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
Больше информации здесь:
Velocity, вероятно, использует загрузчик классов для поиска этих файлов. Я бы рекомендовал поместить их в WEB-INF / classes, который по умолчанию находится в CLASSPATH.