Freemarker 遍历List,Map!
近来和朋友做了个项目,Web开发框架用的是webwork(2.2.2)+freemarker!
总结一下,使用feemarker遍历list,map的经验!
1,Action中的定义!
public class CartMaintenanceAction extends BaseAction
{
private Map<String,Item> itemMap;
private List<Item> itemList;
public String input() {
return INPUT;
}
public String find() {
return SUCCESS;
}
public String addItemToCart() {
Map<String,Item> cartMap = new HashMap<String,Item>();;
List<Item> cartList = new ArrayList<Item>();
Item item1 = new Item();
item1.setId(new Long(110));
item1.setName("好好学习");
Item item2 = new Item();
item2.setId(new Long(111));
item2.setName("天天向上");
//切记在webwork自带的freemarker中对Map中Key的定义为String类型(如果你想用${Session["cartMap"][key].name}这样取值的话;如果用${session.getAttribute("cartMap").get(key).getName()}这样取值就可以用其他类型,如Map<Long,Object>),更高片本是否可以用其他类型本人未曾验证。
cartMap.put(item1.getId().toString(),item1);
cartMap.put(item2.getId().toString(),item2);
cartList.add(item1);
cartList.add(item2);
//把list,map放到session中。
ActionContext.getContext().getSession().put("cartMap", cartMap);
ActionContext.getContext().getSession().put("cartList", cartList);
return "add";
}
public List<Item> getItemList() {
return itemList;
}
public void setItemList(List<Item> itemList) {
this.itemList = itemList;
}
public Map<String, Item> getItemMap() {
return itemMap;
}
public void setItemMap(Map<String, Item> itemMap) {
this.itemMap = itemMap;
}
}
2,*.ftl文件。
对List遍历:
<@ww.form action="/order/cartMaintenanceAction!addItemToCart.action" method="post" id="cartFormId">
<#if Session["cartList"]?exists>
<#list Session["cartList"] as item>
//itemList是action中定义的字段。作批量更新使用。
<@ww.hidden name="itemList[${item_index}].id" value="${item.id}"/>
<@ww.textfield name="itemList[${item_index}].name" cssClass="input" value="${item.name}" size="3"/>
</#list>
</#if>
</@ww.form>
对Map遍历:
//Map<String ,Object> Map中的key必为String 型在freemarker 在webwork2.2.2中自己的,更高的版本就不知道可不可能用其他类型,
<@ww.form action="/order/cartMaintenanceAction!addItemToCart.action" method="post" id="cartFormId">
<#if Session["cartMap"]?exists>
<#assign cart = Session["cartMap"]>
<#list cart?keys as itemKey>
<#assign item = cart[itemKey]>
//如果Map中的key是Long类型则用${session.getAttribute("cartMap").get(itemKey).getId}取值。
//itemMap是action中定义的字段。作批量更新使用。
<@ww.hidden name="itemMap[${itemKey}].id" value="${item.id}"/>
<@ww.textfield name="itemMap[${itemKey}].name" cssClass="input" value="${item.name}" size="3"/>
</#list>
</#if>
</@ww.form>
参考文章:http://www.iteye.com/topic/17468?page=1
分享到:
相关推荐
在FreeMarker中,遍历`List<Map<String>>`是常见的操作,尤其在处理从后端传来的复杂数据结构时。这篇博客链接虽然无法直接访问,但从标题来看,我们可以推测其内容可能涉及如何在FreeMarker模板中遍历一个包含Map...
本实例将详细介绍如何在Freemarker中遍历list集合,帮助你理解和应用这一核心功能。 在Freemarker中,遍历list集合主要依赖于`<#list>`指令。当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在...
例如,遍历List<Map>: ```freemarker <#list list as item> <#list item as key, value> Key: ${key}, Value: ${value} </#list> </#list> ``` 这里,外层`<#list>`遍历List,内层`<#list>`遍历每个Map的键值对...
Freemarker 提供了多种循环遍历方式,包括遍历普通 List、遍历 Map 和遍历 List 的前面几项。遍历普通 List 的语法如下: ```html <#list someList as item> ... </#list> ``` 遍历 Map 的语法如下: ```html <#...
如果List的元素是Map,可以这样遍历: ```freemarker <#list users as userMap> , value in userMap> ${key}:${value} </#list> ``` ### 5. 获取当前选代的索引 在遍历过程中,可以使用`<#list>`的`index`属性...
- **循环**:`<#list>` 可以遍历集合,`<#foreach>` 可用于更复杂的迭代。 - **指令**:Freemarker提供了多种指令,如`<#include>`用于包含其他模板,`<#assign>`用于定义变量。 3. **数据模型** 数据模型是...
Freemarker有许多内置的指令,如`include`用于包含其他模板,`import`用于导入宏库,`list`用于遍历集合等。同时,还可以自定义函数和宏来扩展功能。 10. **模板调试** Freemarker提供了一个调试模式,可以帮助...
- **Map对象**:Freemarker支持Java Map对象作为数据模型,键值对可以通过模板语法访问。 - ** Beans**:可以直接使用Java Bean对象,属性可以通过`.`操作符访问。 - **List和集合**:列表和集合可以通过`<#list>...
2. **数据模型(Data Model)**:数据模型是Freemarker用来渲染模板的数据源,它可以是Java对象、Map、List等任何形式。在Java中,通常通过`ModelAndView`或`Map`将数据传递给Freemarker。 3. **Freemarker指令...
在这个模板中,`<#list>`指令遍历`persons`列表,而`${person.name}`和`${person.age}`则将Java对象的属性值插入到XML中。 3. **Freemarker配置(Configuration)**:设置Freemarker的工作环境,例如模板文件的路径...
这里的`#list`是Freemarker的迭代指令,遍历`dropdownList`中的每一项,并将`key`和`value`分别插入到`<option>`的`value`和文本内容中。 为了实现通用性,我们需要一个方法或服务在后端生成这个`dropdownList`,...
3. 循环结构:`<#foreach item in list>`,遍历列表或数组。 4. 赋值语句:`<#assign var = value>`,定义变量。 5. 注释:`<!--#comment-->`,用于模板中的注释。 四、FreeMarker在Web开发中的应用 1. JSP替代:...
- **循环**:`<#list>` 用于遍历集合,如数组、列表或映射的键值对。 - **内置函数**:如`length()`计算长度,`join()`连接字符串等,文档`内置函数及用法.doc`应详细阐述了这些函数的使用。 4. **创建简单...
- 数据模型:Freemarker与后台代码交互,获取数据并封装成Map对象,这些对象在模板中通过键值对访问。 - 模板:使用FTL(Freemarker Template Language)编写,包含静态文本和变量/指令。 4. **模板指令** - `#...
- 遍历Map:`<#list map?keys as key>`,其中`?keys`用于获取Map的所有键。 这些操作使得在模板中处理复杂的数据结构变得更加简单。 #### 八、输出变量 Freemarker支持输出模型中的顶层变量。 - **输出顶层变量...
- **列表和迭代**:`<#list>`指令用于遍历集合、数组或Map,输出其内容。 - **条件语句**:`<#if>`、`<#elseif>`、`<#else>`用于条件判断。 - **异常处理**:`<#try>`、`<#catch>`、`<#finally>`用于捕获和处理模板...
-- 使用Freemarker遍历JSON数组 --> <#list data.array as item> ${item.property} </#list> <!-- 示例HTML截取 --> ${truncateHtml(originalHtml, 100)} ``` 这个模板展示了如何展示JSON数据中的标题和...
数据模型可以是Java对象、集合、Map等,它们通过模板变量在模板中引用。 3. **模板语言**:FreeMarker的模板语言由一系列控制结构(如条件语句、循环)、表达式(用于访问数据模型中的属性)和函数组成。例如,`...
9. **条件判断和循环**:`<#if>`、`<#else>`、`<#elseif>`用于条件判断,`<#foreach>`遍历集合,`<#list>`则提供更灵活的列表处理。 10. **逻辑运算和比较**:Freemarker支持基本的逻辑运算符(`&&`、`||`、`!`)和...