<#if bookMap?exists>
<#list bookMap?keys as bookKey>
<#if bookKey_index%2 = 0>
<tr class="odd">
<#else>
<tr class="even">
</#if>
<#assign values = bookMap[bookKey]>
<#if values?exists>
<#if values["book"]?exists>
<#assign book = values["book"]>
<td>${book.isbn?default("")}</td>
<td><a href="/book/show/${book.id?c}">${book.title?default("")}</a></td>
<td>
<#if values["authorList"]?exists>
<#assign authors=values["authorList"]>
<#if authors?exists>
<#list authors as author>
${author.username?default("")}
</#list>
</#if>
</#if>
</td>
<#if book.pubdate??><td>${book.pubdate?string("yyyy-MM-dd")}</td><#else><td> </td></#if>
<td>${book.publisher?default("")}</td>
</#if>
</#if>
</tr>
</#list>
</#if>
分享到:
相关推荐
@RequestMapping(/freemarker) @Controller public class FreemarkerController { //测试1 @RequestMapping(/test1) public String test1(Model model){ //向数据模型放数据 model.addAttribute(name,三年二班)...
3. **遍历Map**:使用`<#list>`指令,我们遍历`dataList`中的每一个Map对象,然后再次使用`<#list>`遍历Map中的每一个键值对。 4. **输出结果**:`${key}`和`${value}`分别代表Map中的键和对应的值,它们会被替换为...
5. **遍历map**:如果list中的元素是map,可以用`key`和`value`遍历键值对。 ```freemarker [0].properties as entry> 属性名: ${entry.key}, 值: ${entry.value} ``` 6. **反向遍历**:使用`reverse`指令...
本教程主要关注如何在FreeMarker中正确遍历Map。 首先,我们要明白在FreeMarker中直接遍历Map的特殊性。由于FreeMarker的设计,当你尝试直接在模板中遍历一个Map,它实际上会遍历Map的所有键(key),而不是值...
Freemarker 提供了多种循环遍历方式,包括遍历普通 List、遍历 Map 和遍历 List 的前面几项。遍历普通 List 的语法如下: ```html ... ``` 遍历 Map 的语法如下: ```html () as name> ${nameMap.get(name)} ``...
Map的遍历使用`<#foreach>`指令,键值对可以通过`key`和`value`来访问: ```freemarker 键:${entry.key},值:${entry.value} ``` ### 4. 遍历 List<Map> 如果List的元素是Map,可以这样遍历: ```freemarker ...
在Java应用中,Freemarker通过ModelAndView或者Map对象将数据传递到视图层。开发者可以在Java后端准备数据模型,然后传递给Freemarker模板,模板根据模型中的数据生成HTML输出。 4. **与Struts2集成** Struts2是...
FreeMarker会遍历模板,遇到每个占位符`${}`,它都会查找相应的值并替换。 8. **转换回Word文档**: 最后,使用Apache POI或类似的库,将生成的XML文件转换回Word文档(`.docx`格式)。这个过程通常涉及解析XML,...
2. **数据模型(Data Model)**:数据模型是Freemarker用来渲染模板的数据源,它可以是Java对象、Map、List等任何形式。在Java中,通常通过`ModelAndView`或`Map`将数据传递给Freemarker。 3. **Freemarker指令...
- **Map对象**:Freemarker支持Java Map对象作为数据模型,键值对可以通过模板语法访问。 - ** Beans**:可以直接使用Java Bean对象,属性可以通过`.`操作符访问。 - **List和集合**:列表和集合可以通过`<#list>...
- 遍历Map:`<#list map?keys as key>`,其中`?keys`用于获取Map的所有键。 这些操作使得在模板中处理复杂的数据结构变得更加简单。 #### 八、输出变量 Freemarker支持输出模型中的顶层变量。 - **输出顶层变量...
1. **数据模型(Model)**:这是你要生成XML所依赖的数据,可以是Java对象、Map或者其他集合类型。例如,你可以创建一个包含多个元素的列表,每个元素都有属性如`name`、`age`等。 ```java List<Person> persons = ...
- `freeMakerTest`可能是包含一个简单的FreeMarker模板测试用例,如展示用户列表,每个用户的信息用模板元素表示,通过循环遍历数据模型生成HTML。 理解FreeMarker的关键在于掌握其模板语法和如何与Java对象交互。...
- 数据模型:Freemarker与后台代码交互,获取数据并封装成Map对象,这些对象在模板中通过键值对访问。 - 模板:使用FTL(Freemarker Template Language)编写,包含静态文本和变量/指令。 4. **模板指令** - `#...
开发者可以将任何Java对象传递给FreeMarker,包括基本类型、集合、Map等。 3. 指令和变量:FreeMarker支持多种指令,如`<#if>`(条件判断)、`<#foreach>`(循环)和`<#assign>`(赋值)。变量则用于显示数据模型中...
- **列表和迭代**:`<#list>`指令用于遍历集合、数组或Map,输出其内容。 - **条件语句**:`<#if>`、`<#elseif>`、`<#else>`用于条件判断。 - **异常处理**:`<#try>`、`<#catch>`、`<#finally>`用于捕获和处理模板...
在Java代码中,你需要创建一个数据模型(通常是一个Map对象),其中键是模板中的变量名,值是对应的Java对象。然后将这个数据模型传递给Freemarker,它会根据数据模型中的内容解析模板。 3. **配置与初始化**: ...
-- 使用Freemarker遍历JSON数组 --> ${item.property} <!-- 示例HTML截取 --> ${truncateHtml(originalHtml, 100)} ``` 这个模板展示了如何展示JSON数据中的标题和描述,以及如何遍历JSON数组并将元素...
3. **指令**:FreeMarker提供了一系列指令,用于控制模板的逻辑,比如`#if`用于条件判断,`#foreach`用于循环遍历集合,`#include`用于引入其他模板,`#import`用于导入函数库等。 4. **国际化与本地化**:...