用Freemarker做模本语言有一段时间了,列出几个和JSP或者Velocity相比起来比较方便的用途,目的是引诱更多的人跳上Freemarker这个贼船,
1. String内置的JavaScript转换: js_string
用途:用于JavaScript转义,转换',",换行等特殊字符
模板:
<script>
alert("${errorMessage?js_string}");
</script>
输出:
<script>
alert("Readonly\'s pet name is \"Cross Bone\"");
</script>
2.内置的默认值处理:default
用途: 用于处理默认值
模本:
User: ${userLogin.name?default("Anonymous")}
<td>${(employee.department.manager.name)?default(" ")}</td>
输出:
User: Anonymous
<td> </td>
注,可以对整个对象树加上(),再用内置处理器这种方便的做法,偶也是最近刚学会的,以前一直用很傻的方法做.....
3. Sequence内置的计数器: xxx_index
用途:显示序号
模板:
<#list employees as e>
${e_index}. ${e.name}
</#list>
输出:
1. Readonly
2. Robbin
4. Sequence内置的分段器: chunk
用途:某些比较BT的排版需求
模板:
<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']>
<#list seq?chunk(4) as row>
<ul>
<li><#list row as cell>${cell} </#list></li>
</ul>
</#list>
<#list seq?chunk(4, '-') as row>
<tr>
<td><#list row as cell>${cell} </#list></td>
</tr>
</#list>
输出:
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
</ul>
<ul>
<li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
</ul>
<ul>
<li>i</li>
<li>j</li>
</ul>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
</tr>
<tr>
<td>e</td>
<td>f</td>
<td>g</td>
<td>h</td>
</tr>
<tr>
<td>i</td>
<td>j</td>
<td>-</td>
<td>-</td>
</tr>
分享到:
相关推荐
在IT行业中,`Freemarker`是一个...通过学习和分析这个例子,你可以快速掌握如何在实际项目中实现这个功能。同时,记得不断探索`Freemarker`和Apache POI的文档,了解更多高级特性,以便在未来的开发中更加得心应手。
总的来说,FreeMarker在Struts中的应用涉及以下几个关键知识点: 1. FreeMarker模板语言的基本语法,包括变量引用、表达式、控制结构和内置函数。 2. 如何在Struts框架中配置和使用FreeMarker,包括模板的加载路径、...
在“springMVC学习--基本的几个例子”这个主题中,我们将深入探讨SpringMVC的基础配置以及几个关键示例。 1. **SpringMVC基本配置**: - **web.xml配置**:这是SpringMVC应用的入口点,我们需要配置...
在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本格式的文件,其中包含可被替换或计算的占位符(称为`<#...>`指令和`${...}`表达式)。 2. **...
**整合 Freemarker 和 Sitemesh** 的过程主要包括以下几个步骤: 1. **配置Sitemesh**:首先,需要在Web应用的`web.xml`配置文件中添加Sitemesh的过滤器。这个过滤器会在每个请求处理之前和之后执行,对页面进行...
在整合Freemarker和Struts2进行分页的过程中,通常需要以下几个步骤: 1. **配置Struts2**:确保你的项目已经正确配置了Struts2,包括struts2的核心库和其他必要的插件,如struts2-freemarker-plugin,这将使Struts...
总结来说,这个例子展示了如何结合Struts1.2和Freemarker2.3.8实现登录成功页面的静态化,通过静态化可以提高网站性能,减轻服务器负担,提升用户体验。在实际开发中,开发者可以根据项目需求灵活运用这些技术和策略...
通常,这样的示例会包含以下几个部分: - `freemarker.jar`:Freemarker的库文件,是运行示例所必需的。 - `templates`目录:存放各种模板文件,如`.ftl`(Freemarker模板语言)文件。 - `data`目录:可能包含用于...
生成PDF的过程通常分为以下几个步骤: 1. **创建模板**:在Freemarker中,我们需要创建一个`.ftl`(Freemarker Template Language)文件,其中包含静态文本和动态占位符。动态占位符由${}或#{}包裹,用于插入数据...
在这个例子中,`${name}`是一个占位符,在模板处理过程中被替换为"World"。 #### 技术选型对比 Freemarker与其他几种模板引擎技术进行了对比,包括JSP、Velocity和Thymeleaf: - **JSP**:专为Servlet设计,不能...
Struts2和FreeMarker是两种...通过学习这个例子,开发者可以深入理解Struts2和FreeMarker如何协同工作,从而在实际项目中实现更高效、更灵活的视图层设计。同时,手册中的详细信息为解决实际问题提供了重要的参考依据。
在Freemarker 2.3.18版本中,有几个关键知识点值得一提: 1. **模板语言基础**:Freemarker模板由静态文本和动态控制结构组成,如`<#if>`、`<#foreach>`等。动态部分是由${...}或#{...}包裹的表达式,用于插入数据...
通过实践这个例子,你将能够掌握FreeMarker和Struts的基础知识,为构建更复杂的Java Web应用打下坚实基础。在实际应用中,还可以结合其他技术,如Spring、Hibernate等,构建更强大的企业级系统。对于初学者,这是一...
在这个例子中,`${user}` 将被数据模型中对应的`user`变量的值所替换。 通过上述介绍,我们可以了解到FreeMarker如何有效地将设计与编程分离,使设计师和开发者能够更高效地协作。同时,它还提供了丰富的数据模型...
在压缩包中的示例可能包括以下几个方面: 1. **基础模板示例**:展示如何在模板中使用变量、条件语句和循环,以及如何嵌套模板。 2. **数据模型绑定**:演示如何将Java对象绑定到模板,并在模板中访问这些对象的...
表达式中支持的比较运算符有如下几个: 1. =或者==:判断两个值是否相等. 2. !=:判断两个值是否不等. 3. >或者gt:判断左边值是否大于右边值 4. >=或者gte:判断左边值是否大于等于右边值 5. <或者lt:判断左边值...
整个配置过程需要注意的几个关键点包括: 1. 确保FreeMarker模板编辑插件正确安装并配置好,以提高开发效率。 2. 在导入jar包时,确保包含了所有必需的依赖,这样才能保证应用正常运行。 3. web.xml文件中的过滤器和...
maven管理项目+springmvc+spring+hibernate+freemarker 集成框架。其中注解格式清晰,hibernate进行了代码封装,对开发效率有了...另外还有几个小例子可以试运行下。有什么问题都可以沟通讨论。 欢迎大家讨论更好的方案
这通常涉及到以下几步: 1. 引入JavaMailSender接口的实现,例如:`org.springframework.mail.javamail.JavaMailSenderImpl`。 2. 配置SMTP服务器的相关属性,如主机名、端口号、用户名、密码等。 3. 设置邮件的...
在实现FreeMarker生成静态页面的过程中,主要有以下几个步骤: 1. **创建FreeMarker模板文件**: 例如,创建一个名为`user.ftl`的模板文件,其中包含HTML结构,并使用`${...}`来标记动态数据的占位符。在这个例子...