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),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

段日诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值