Скорость не может найти ресурс

Что-то не так, и это очень расстраивает. На домашней странице 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.

Спасибо за ваше время:)

17
задан Arne Evertsson 8 December 2011 в 12:53
поделиться

2 ответа

Вы используете Webapp resourceloader, который предназначен для страниц, обслуживаемых сервлетом Velocity Tools. (Он требует некоторой специальной инициализации, чтобы найти корень контекста сервлета).

Я рекомендую использовать ClasspathResourceLoader, а затем поместить файлы в WEB-INF/classes или в другое место в вашем classpath. Это действительно самый простой подход.

resource.loader = class
class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader

Больше информации здесь:

https://velocity.apache.org/engine/1.7/apidocs/org/apache/velocity/runtime/resource/loader/ClasspathResourceLoader.html

27
ответ дан 30 November 2019 в 12:35
поделиться

Velocity, вероятно, использует загрузчик классов для поиска этих файлов. Я бы рекомендовал поместить их в WEB-INF / classes, который по умолчанию находится в CLASSPATH.

1
ответ дан 30 November 2019 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: