如何在引导 application.properties 中使用 spring 设置速度布局目录和默认模板

How to set velocity layout directory and default template with spring in boot application.properties

如果我们不使用 spring 引导,我们可以像这样使用 velocity.properties tools.view.servlet.layout.directory =layout/ tools.view.servlet.layout.default.template=default.vm 或者在我们的 springmvc 项目

中使用这个 bean
<bean id="velocityViewResolver"
    class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
    <property name="cache" value="false" />
    <property name="layoutUrl" value="/layout/default.vm" />
    <property name="prefix" value="/templates/" />
    <property name="suffix" value=".vm" />
    <property name="exposeSpringMacroHelpers" value="true" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="viewClass" value="org.springframework.web.servlet.view.velocity.VelocityLayoutView" />
    <!--  <property name="toolboxConfigLocation" value="classpath:web/config/toolbox.xml" /> 
  <property name="exposeSessionAttributes" value="true" /> -->
</bean>

但我想知道如何通过application.properties设置速度布局。 我对 application.properties 中的 "spring.velocity.properties.* =" 也有些困惑。我们如何以及何时可以使用 it.I 找不到关于此的演示。

已经有大量资源可供您使用。有a sample that you can try. And you can also review the spring.velocity properties in the documentation.

你会发现上面的 XML 样本有很多相似之处,即:

spring.velocity.cache=false
spring.velocity.prefix=/templates/
spring.velocity.suffix=.vm
spring.velocity.expose-spring-macro-helpers=true
spring.velocity.content-type=text/html;charset=UTF-8
spring.velocity.expose-session-attributes=true

我的意思是字面上与XML

中的名称相同

如果您想设置 viewClass,那么您可以创建一个您自己命名的 VelocityViewResolver velocityViewResolver,我们将使用它。

spring.velocity.properties 照它说的做。它是可以设置的附加属性以进一步自定义 VelocityEngineFactory.

查看 VelocityAutoConfiguration 了解更多详情。

终于解决了我的problem.And原谅我没有描述问题clearly.We在我们的项目中使用VelocityLayoutViewResolver作为viewClass,而velocityViewResolver是默认viewClass spring boot.On 另一方面,spring boot support support velocity-tools 2.0.While spring 4.0 not.And 我没有在[=24中用VelocityLayoutViewResolver配置velocity-tools 2.0 =] 开机在 first.And 最后我通过这种方式解决了我的问题:

  <bean id="velocityViewResolver"       class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
            <property name="cache" value="false" />
            <property name="layoutUrl" value="/layout/default.vm" />
            <property name="prefix" value="/templates/" />
            <property name="suffix" value=".vm" />
            <property name="exposeSpringMacroHelpers" value="true" />
            <property name="contentType" value="text/html;charset=UTF-8" />
            <property name="viewClass" value="org.springframework.web.servlet.view.velocity.VelocityLayoutView" />
           <property name="attributesMap">
            <map>
                <entry key="csrfTool"><bean class="com.XXX.velocity.CSRFTool"/></entry>
                <entry key="shiro"><bean class="com.XXX.velocity.Permission"/></entry>
            </map>
        </property>
        </bean>

并从

开始
@Configuration
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(new String[] {
                "classpath*:web/config/viewResolver.xml",
            }, args);
}
}

非常感谢 Stéphane Nicoll 的回答。