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

时间:2015-08-07 01:10:19

标签: java spring-mvc spring-boot velocity

如果我们不使用spring boot,我们可以使用velocity {property}这样的 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设置速度布局。 而且我对#34; spring.velocity.properties。* =&#34;也有一些困惑。在application.properties中。我们如何以及何时可以使用它。我无法找到一个关于此的演示。

2 个答案:

答案 0 :(得分:1)

最后我解决了我的问题。原谅我没有清楚地描述问题。我们在项目中使用VelocityLayoutViewResolver作为viewClass,而springViewResolver是spring boot中的默认viewClass。另一方面,spring boot支持velocity-tools 2.0虽然春天4.0没有。而且我没有在春季启动时如何使用VelocityLayoutViewResolver配置velocity-tools 2.0。最后我通过这种方式解决了我的问题:

  <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éphaneNic​​oll的回答。

答案 1 :(得分:0)

您可以随意使用大量资源。您可以尝试a sample。您还可以查看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的{​​{1}},我们会使用它。

velocityViewResolver执行它所声明的内容。可以设置其他属性以进一步自定义spring.velocity.properties

查看VelocityAutoConfiguration了解详情。