Spring Framework中FreeMarker模板引擎的集成与使用指南
spring-framework 项目地址: https://gitcode.com/gh_mirrors/spr/spring-framework
一、FreeMarker简介
FreeMarker是Apache旗下的模板引擎,能够生成各种文本输出,从HTML到电子邮件等。Spring Framework内置了对FreeMarker的支持,可以方便地在Spring MVC中使用FreeMarker模板。
二、视图配置
1. Java配置方式
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker();
}
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("/WEB-INF/freemarker");
configurer.setDefaultCharset(StandardCharsets.UTF_8);
return configurer;
}
}
2. XML配置方式
<mvc:annotation-driven/>
<mvc:view-resolvers>
<mvc:freemarker/>
</mvc:view-resolvers>
<mvc:freemarker-configurer>
<mvc:template-loader-path location="/WEB-INF/freemarker"/>
</mvc:freemarker-configurer>
3. 高级配置
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
三、FreeMarker高级配置
可以通过FreeMarkerConfigurer
设置FreeMarker的全局配置:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape"/>
</map>
</property>
</bean>
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
四、表单处理
Spring为FreeMarker提供了一套强大的表单处理宏,简化了表单绑定和验证错误的显示。
1. 基本绑定示例
<#import "/spring.ftl" as spring/>
<html>
<form action="" method="POST">
Name:
<@spring.bind "personForm.name"/>
<input type="text"
name="${spring.status.expression}"
value="${spring.status.value?html}"/><br />
<#list spring.status.errorMessages as error> <b>${error}</b> <br /> </#list>
<input type="submit" value="submit"/>
</form>
</html>
2. 表单输入宏
Spring提供了一系列表单宏来简化开发:
| 宏名称 | 描述 | |--------|------| | formInput | 标准输入框 | | formHiddenInput | 隐藏输入框 | | formPasswordInput | 密码输入框 | | formTextarea | 文本域 | | formSingleSelect | 下拉单选 | | formMultiSelect | 下拉多选 | | formRadioButtons | 单选按钮组 | | formCheckboxes | 复选框组 | | formCheckbox | 单个复选框 | | showErrors | 显示验证错误 |
3. 使用示例
输入框示例
<@spring.formInput "command.name"/>
<@spring.showErrors "<br>"/>
单选按钮示例
Town:
<@spring.formRadioButtons "command.address.town", cityMap, ""/>
五、HTML转义
1. 启用XHTML兼容模式
<#assign xhtmlCompliant = true>
2. 控制HTML转义
<#-- 开启HTML转义 -->
<#assign htmlEscape = true>
<@spring.formInput "command.name"/>
<#-- 关闭HTML转义 -->
<#assign htmlEscape = false in spring>
六、最佳实践
- 模板位置:建议将模板文件放在
/WEB-INF/freemarker/
目录下 - 字符编码:始终明确设置UTF-8编码
- 宏导入:统一使用
<#import "/spring.ftl" as spring/>
导入宏 - 错误处理:合理使用
showErrors
宏显示验证错误 - 性能考虑:对于大型表单,考虑使用
LinkedHashMap
保持选项顺序
通过本文的介绍,开发者可以全面了解如何在Spring MVC项目中集成和使用FreeMarker模板引擎,从基本配置到高级表单处理,为构建灵活、高效的Web应用提供了坚实的基础。
spring-framework 项目地址: https://gitcode.com/gh_mirrors/spr/spring-framework
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考