Freemarker语法详解:struts2整合与实战应用

3星 · 超过75%的资源 需积分: 50 7 下载量 60 浏览量 更新于2024-07-30 收藏 41KB DOCX 举报
"这篇文档主要介绍了FreeMarker的基本语法和在Struts2框架中的整合使用,适合于开发人员理解和掌握FreeMarker模板语言的核心概念。" FreeMarker是一个强大的、轻量级的模板引擎,常用于Web应用中生成动态内容,如HTML页面。在Struts2框架中,FreeMarker可以作为表现层技术,将业务逻辑与视图分离,提高代码的可维护性。 1. FreeMarker在Struts2中的整合 在Struts2中配置FreeMarker,需要在Action的配置中指定结果类型为"freemarker",并给出对应的FTL(FreeMarker模板)文件路径。例如: ```xml <action name="Action1" class="com.abc.Action1"> <result type="freemarker">/fm.ftl</result> </action> ``` 这里并没有提及Struts2的标签使用,但通常可以通过配置使FreeMarker模板支持Struts2的标签库。 2. 基本的输出 - 输出变量:使用`${}`符号包裹变量名,如`${student.name}`。 - 空值判断: `${student.name?if_exists}`,如果变量不存在或值为空,则不输出。 - 默认值: `${student.name?default('xxx')}` 或 `${book.name!"xxx"}`,当变量值为空时显示默认值。 - 日期格式化: `${student.birthday?string('yyyy-MM-dd')}`,将日期转换为指定格式。 - 数字格式化: `${student.age?string.number}`(数字格式)、`${student.age?string.currency}`(货币格式)、`${student.age?string.percent}`(百分比格式)。 - URL参数编码:`<a href='search.htm?name=${student.name?url}'>查询</a>`,自动处理中文参数编码。 - Boolean值转换: `${flag?string("yes","no")}`,将布尔值转换为字符串"yes"或"no"。 3. 逻辑判断 - `if-else`形式:用于条件判断,如 `<#if condition>...<#else>...</#if>`。 - `switch`形式:用于多条件分支判断,如 `<#switch value>...<#case refValue1>...<#case refValue2>...<#default>...</#switch>`。 4. 循环 - 遍历列表:`<#list someList as item>`,可以遍历整个列表,`item`是当前元素的别名。 - 遍历列表的部分元素:`<#assign x=3><#list someList[0..x-1] as item>`,限制只遍历前`x`个元素。 5. 其他操作 - 使用`<#assign>`定义变量,如 `<#assign flag=true/>`。 - 避免未定义变量抛错:推荐为输出变量提供默认值,避免出现错误提示。 FreeMarker的语法丰富多样,不仅包含以上基础操作,还支持自定义函数、控制结构、模板继承等高级特性。在实际项目中,熟练掌握FreeMarker的使用能够有效提升开发效率,同时保持模板的清晰易读。通过与Struts2等框架的集成,FreeMarker成为构建动态Web应用的强大工具。