如何在引导 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 的回答。
如果我们不使用 spring 引导,我们可以像这样使用 velocity.properties
tools.view.servlet.layout.directory =layout/
tools.view.servlet.layout.default.template=default.vm
或者在我们的 springmvc 项目
<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 的回答。