- 浏览: 51223 次
- 性别:
- 来自: 广州
文章分类
最新评论
==============常用语法================= 三. EG.一个对象BOOK 1.输出 ${book.name} 空值判断:${book.name?if_exists }, ${book.name?default(‘xxx’)}//默认值xxx ${ book.name!"xxx"}//默认值xxx 日期格式:${book.date?string('yyyy-MM-dd')} 数字格式:${book?string.number}--20 ${book?string.currency}--<#-- $20.00 --> ${book?string.percent}—<#-- 20% --> 插入布尔值: <#assign foo=ture /> ${foo?string("yes","no")} <#-- yes --> =============逻辑判断================== 2. a: <#if condition>... <#elseif condit inc 发布于2007-09-08 16:18:57 ion2>... <#elseif condition3>...... <#else>... 其中空值判断可以写成<#if book.name?? > </#if> b: <#switch value> <#case refValue1> ... <#break> <#case refValue2> ... <#break> ... <#case refValueN> ... <#break> <#default> ... </#switch> ===============循环读取================= 3. <#list sequence as item> ... </#list> 空值判断<#if bookList?size = 0></#list> e.g. <#list employees as e> ${e_index}. ${e.name} </#list> <#if mole?default(0)!=0> =============用来压缩空白空间和空白的行=============== 用例 <#assign x = " moo "> (<#compress> 1 2 3 4 5 ${moo} test only I said, test only ) 输出 (1 2 3 4 5 moo test only I said, test only) ==============Sequence内置的计数器============== 3. Sequence内置的计数器: xxx_index 用途:显示序号 模板: <#list employees as e> ${e_index}. ${e.name} </#list> 输出: 1. Readonly 2. Robbin ==============Sequence内置的分段器===================== 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> =====================freemarker的list================================ Scalar String:${scalarString} Scalar Number:${scalarNumber} Object is:${scalarObject} List使用样例-List元素为Scalar对象: <#list scalarList as value0> Scalar List值:${value0} </#list> List使用样例-List元素为User对象: <#list userList as listUser> List对象User Id值:${listUser.userId} </#list> Map使用样例-Map Values元素为Scalar : <#list scalarMap?keys as mykey> Scalar Map key is :${mykey} Scalar Map value is:${scalarMap[mykey]} </#list> Map使用样例-Map Values元素为User对象: <#list userMap?keys as key1> <#assign mapUser="${userMap[key1]}" > User Object is :${mapUser} <#-- 以下方法有问题 User is :${mapUser.userId} <br> --> </#list> ==============FreeMarker中list排序============== 升序: <#list list?sort_by("time") as v> </#list> 降序: <#list list?sort_by("time") as v> </#list> ===============freemarker在模板中定义变量============== 在模板中定义的变量有三种类型: plain变量:可以在模板的任何地方访问,包括include指令插入的模板,使用assign指令创建和替换 <#include "/WEB-INF/index/top.html"> ==============freemarker.properties配置================ (1)解决输出中文乱码问题: default_encoding=UTF-8 locale=zh_CN number_format=# (2)提高freemarker的性能 template_update_delay=60000 (3)freemarker的标签种类: ${..} # 代表是FTL tags <#if ...></#if> <#list totalList as elementObject>...</#list> @ ,代表用户自定义的标签 <#-- --> 注释标签,注意不是<!-- --> =====================将图片整除换行====== <#if (u_index+1)%4=0>当图片超过五个就换行======= <table width="100%"> <tr> <td><table width="100%"> <tr> <#if map["最新-图片"]?exists> <#list map["最新-图片"] as u> <#if (u_index+1)%4=0> <td><table width="70" height="65" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="middle" bgcolor="#6F7074"> <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "><img src="${u.chartpath?default('')}" width="67" height="41" border="0" /></a></td> </tr> <tr> <td align="center" bgcolor="#6F7074"> <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 " class="tableff"> <@jf.greet title=u.title len=4 /></a> </td> </tr> </table></td></tr><tr > <#else> <td><table width="70" height="65" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="middle" bgcolor="#6F7074"> <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 "><img src="${u.chartpath?default('')}" width="67" height="41" border="0" /></a></td> </tr> <tr> <td align="center" bgcolor="#6F7074"> <a target="_blank" href="shownews.page?id=${u.id?default("")}&mole=2 " class="tableff"> <@jf.greet title=u.title len=4 /></a> </td> </tr> </table></td> </#if> </#list> </#if> </tr> </table> </td> </tr> </table> </tr> </table></td> </#if> </#list> </#if> </tr> </table> </td> </tr> </table> ===============================freemarker中在application ${Application.web_title} 在类里: list=dser.indexvideo(cvo); if(list.size()!=0){ map.put("最新",list);} 在html静态页里: <#import "/WEB-INF/ftl/index.ftl" as jf> (index.ftl <#macro greet title len> <#if title?length != 0> <#if (title?length>len)> ${title[0..len-1]} <#else> ${title?trim} </#if> <#else> ${title?default("")} </#if> </#macro> <#--时间比较--> <#macro vstime start end> <#if start?default("")==""||end?default("")==""> -- <#else> <#assign starts=start?replace("-","") > <#assign ends=end?replace("-","") > <#if (starts?number>ends?number)> <font color="red">以过期</font> <#else> 未过期 </#if> </#if> </#macro> ) <#if map["最新"]?exists> <#list map["最新"] as u> ${u.filepath?default('')} <@jf.greet title=u.title len=6 /> </#list></#if>
freemarker 循环map
java类代码
Map<String,List<Object>> map = new HashMap<String,List<Object>>(); //注意freemarker中Map的key只能为String
.ftl页面循环Java代码
//此处如何获取map 就不说了。以下是循环map <#list map?keys as mykey> key 值 为: ${mykey} value 值获取: <#assign mapUser=map[mykey] > //些入没有引号 <#list mapUser as contents> ${contents.id} //其它值雷同 </#list> </#list> //此处如何获取map 就不说了。以下是循环map <#list map?keys as mykey> key 值 为: ${mykey} value 值获取: <#assign mapUser=map[mykey] > //些入没有引号 <#list mapUser as contents> ${contents.id} //其它值雷同 </#list>
</#list> 以上是最近用freemaker 做模板,循环map所遇到的问题,在此记录一下。
发表评论
-
java开发经验之谈
2011-11-08 00:09 899多次循环查数据库(如果循环次数多),会增加IO操作,能一次性查 ... -
用JXL操作Excel
2011-10-26 08:42 2481/****************************** ... -
showModalDialog 下载文件问题
2011-09-15 13:17 2017showDialog里好像不能用href,只能用onclick ... -
MyEclipse 安装vss插件
2011-02-22 15:47 3365myEclipse(MyEclipse)下VSS的 ... -
JAVA UUID 生成
2010-11-08 23:32 1267GUID是一个128位长的数字,一般用16进制表示。算法的核心 ... -
文件的处理
2010-11-08 15:23 917package my.util; import ...
相关推荐
总结,FreeMarker语法提供了丰富的表达能力和控制结构,使得模板编写灵活且易于维护。通过熟练掌握这些知识,开发者可以高效地生成动态内容,提高开发效率。在实际项目中,结合源码理解和工具辅助,能更好地利用...
### FreeMarker语法详解 #### 一、FreeMarker模板文件组成 FreeMarker模板文件与普通的HTML页面相比,并不显得更为复杂。其主要组成部分包括: 1. **文本**:这部分内容会被直接输出到最终生成的文档中。 2. **...
以下是关于Freemarker语法规则的详细解释: 1. **变量表达式**: Freemarker中的变量表达式通常以`${}`包裹,用来输出Java对象的属性值。例如,如果有一个名为`user`的对象,其`name`属性为"张三",那么`${user....
### Java Freemarker 语法详解 #### 一、Freemarker 概述与基本概念 Freemarker 是一种用于生成动态内容的模板引擎,它能够帮助开发者将数据模型中的数据渲染到 HTML 页面上,从而实现前后端分离的效果。...
根据提供的文件信息,我们可以深入探讨FreeMarker的基础语法及其在模板引擎中的应用。FreeMarker是一种用于生成文本输出的模板引擎,广泛应用于Web开发中,能够帮助开发者动态生成HTML、XML等格式的内容。接下来,...
本文将对 Freemarker 的基本语法进行整理,涵盖输出、逻辑判断、循环遍历、宏等方面的知识点。 输出 在 Freemarker 中,输出变量的值可以使用 `${}` 语法,例如 `${student.name}`。如果变量为空,可以使用 `?if_...
本文将全面总结FreeMarker的语法,帮助初学者快速掌握其核心概念。 1. **模板基本结构** - **文本**:模板中的大部分内容是纯文本,会被直接输出。 - **注释**:使用`<#-- ... -->`包裹的内容为注释,不会出现在...
以下是关于Freemarker语法的详细说明: 1. **Scalars**: - 字符串:可以通过单引号或双引号定义,特殊字符需要转义。 - 数字:直接写入,支持整数和浮点数,但不支持科学计数法。 - 日期:通常从数据模型获取,...
### Freemarker(FTL)常见语法详解 Freemarker是一种基于模板引擎技术的软件,用于生成文本输出。它被广泛应用于Web开发中,用来生成HTML页面或其他格式的文档。Freemarker使用简单直观的语法,使得开发者能够轻松...
FreeMarker支持丰富的表达式语法,可以用来进行各种计算、逻辑判断等。 1. **直接值表达式**:可以直接引用变量名,如 `${"我的路径C://"}`。为了转义特殊字符,FreeMarker支持多种转义符号,例如 `/";` 表示双引号...
它提供了丰富的语法结构和指令来实现复杂的逻辑控制和数据处理。以下是对 Freemarker 语法的详细解释: 1. **指令:** - **if, else, elseif**:用于条件判断。`<#if condition>`检查条件,如果为真则执行相应代码...
- **FreeMarker**提供了多种循环结构,如`<#list items as item>`,可以处理不同的数据类型和复杂度。 - **Velocity**也支持循环,但其语法相对简单,通常使用`#foreach($item in $items)`这样的形式。 3. **条件...
它们用于控制模板的逻辑,例如循环(`#list`)、条件判断(`#if`,`#else`等)、包含其他模板(`#include`)等。指令可以是开始标签、结束标签或空标签形式,且需要正确嵌套,如同XML。 例如,以下是一个简单的...
在本教程中,我们将探讨如何利用Freemarker模板来导出Word文档,并实现循环插入图片和表格的功能。这对于需要批量生成定制化报告或者文档的应用场景非常有用。 首先,我们需要了解Freemarker的基本语法。在...
总之,FreeMarker语法大全涵盖了从基础语法到高级特性的全方位知识,熟练掌握这些内容,你就能自如地利用FreeMarker构建高效、可维护的模板系统。通过不断地实践和学习,你将成为FreeMarker的专家,为你的项目带来...
### FreeMarker语法详解 #### 一、概述 FreeMarker是一个强大的模板引擎,广泛应用于Web开发领域,用于将数据模型中的数据动态地填充到HTML、XML等格式的文档中。其核心概念包括文本、注释、插值以及FTL指令。 ##...
`有关freemarker的语法,循环,逻辑 Java & Game.mht`可能涉及FreeMarker在游戏开发或Java Web应用中的具体应用,讲解如何利用FreeMarker处理游戏场景的动态渲染或构建复杂的Web界面。 综上所述,这个压缩包提供的...
### FreeMarker语法详解 #### 一、FTL指令规则 FreeMarker使用FTL(FreeMarker Template Language)指令来实现各种逻辑处理。这些指令类似于HTML标签,但它们具有不同的功能。 1. **开始标签**:`...