Velocity 2 не будет устанавливать свойства - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь обновить проект с Spring 3 до Spring 5.0.5. Я обновил скорость с этой новой инициализацией, которую я написал:

private static void initVelocity() throws VelocityException, IOException{
    Properties props = new Properties();
    props.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath"); 
    props.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());

    Velocity.init( props );
}

Я использую следующие зависимости:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
</dependency>

Но по странной причине, когда я получаю Velocity.getProperty( "classpath.resource.loader.class");, я получаю null, и я получаю NullPointerException, когда пытаюсь получить шаблон.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Скорость была удалена из пружины 5 ( устарела весной 4.3 )

Для Spring 5 мы стратегически отходим от традиционных веб-представлений на основе шаблонов в целом. Даже по одной только этой причине мы не собираемся вводить поддержку каких-либо новых поколений шаблонизаторов, а скорее сосредоточимся на других областях (интеграция Джексона, шаблоны JavaScript и т. Д.). FWIW, мы будем продолжать поддерживать FreeMarker в качестве своего рода справочника - в классическом Servlet MVC, а также в новой реактивной веб-поддержке Spring - включая наши базовые базовые классы для представлений на основе шаблонов, которые могут извлекать другие классы поддержки (например, Velocity). 1.x классы представления делают прямо сейчас).

Есть комментарий для ожидания / запроса скорости 2 поддержки

Как уже упоминалось выше, любые заинтересованные стороны, пожалуйста, попросите команду Velocity самостоятельно поставлять адаптеры Spring для Velocity 2.0

А вот несколько советов для продолжения использования скорости

удалить spring.velocity.properties:

Добавьте свойства созданного Боба:

@Bean
VelocityEngine velocityEngine(){
    Properties properties = new Properties();
    properties.load(this.getClass().getResourceAsStream("/application.properties"));
    return new VelocityEngine(properties);
}
0 голосов
/ 07 мая 2018

Я не очень разбираюсь в Velocity, но мы обычно создаем новый экземпляр VelocityEngine. Вы получите это свойство из конкретного экземпляра вместо самого объекта Velocity. Смотрите следующий код:

Properties props = new Properties()
props.put("classpath.resource.loader.class", 
          ClasspathResourceLoader.class.getName());
props.put(RuntimeConstants.RESOURCE_LOADER, "classpath");
VelocityEngine engine = new VelocityEngine(props);

Теперь загрузите загрузчик через

engine.getProperty("classpath.resource.loader.class");
...