Spring Framework中FreeMarker模板引擎的集成与使用指南

Spring Framework中FreeMarker模板引擎的集成与使用指南

【免费下载链接】spring-framework 【免费下载链接】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>

六、最佳实践

  1. 模板位置:建议将模板文件放在/WEB-INF/freemarker/目录下
  2. 字符编码:始终明确设置UTF-8编码
  3. 宏导入:统一使用<#import "/spring.ftl" as spring/>导入宏
  4. 错误处理:合理使用showErrors宏显示验证错误
  5. 性能考虑:对于大型表单,考虑使用LinkedHashMap保持选项顺序

通过本文的介绍,开发者可以全面了解如何在Spring MVC项目中集成和使用FreeMarker模板引擎,从基本配置到高级表单处理,为构建灵活、高效的Web应用提供了坚实的基础。

【免费下载链接】spring-framework 【免费下载链接】spring-framework 项目地址: https://gitcode.com/gh_mirrors/spr/spring-framework

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值