`
happinessmoon
  • 浏览: 76030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Freemarker 遍历List,Map!

阅读更多

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

    在FreeMarker中,遍历`List&lt;Map&lt;String&gt;&gt;`是常见的操作,尤其在处理从后端传来的复杂数据结构时。这篇博客链接虽然无法直接访问,但从标题来看,我们可以推测其内容可能涉及如何在FreeMarker模板中遍历一个包含Map...

    Freemarker中遍历list集合实例

    本实例将详细介绍如何在Freemarker中遍历list集合,帮助你理解和应用这一核心功能。 在Freemarker中,遍历list集合主要依赖于`&lt;#list&gt;`指令。当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在...

    freemaker学习教程

    例如,遍历List&lt;Map&gt;: ```freemarker &lt;#list list as item&gt; &lt;#list item as key, value&gt; Key: ${key}, Value: ${value} &lt;/#list&gt; &lt;/#list&gt; ``` 这里,外层`&lt;#list&gt;`遍历List,内层`&lt;#list&gt;`遍历每个Map的键值对...

    freemarker基本语法整理

    Freemarker 提供了多种循环遍历方式,包括遍历普通 List、遍历 Map 和遍历 List 的前面几项。遍历普通 List 的语法如下: ```html &lt;#list someList as item&gt; ... &lt;/#list&gt; ``` 遍历 Map 的语法如下: ```html &lt;#...

    FreeMarker笔记1

    如果List的元素是Map,可以这样遍历: ```freemarker &lt;#list users as userMap&gt; , value in userMap&gt; ${key}:${value} &lt;/#list&gt; ``` ### 5. 获取当前选代的索引 在遍历过程中,可以使用`&lt;#list&gt;`的`index`属性...

    freemarker中文手册,轻松掌握!!

    - **循环**:`&lt;#list&gt;` 可以遍历集合,`&lt;#foreach&gt;` 可用于更复杂的迭代。 - **指令**:Freemarker提供了多种指令,如`&lt;#include&gt;`用于包含其他模板,`&lt;#assign&gt;`用于定义变量。 3. **数据模型** 数据模型是...

    freemarker Demo 适用于freemarker初学

    Freemarker有许多内置的指令,如`include`用于包含其他模板,`import`用于导入宏库,`list`用于遍历集合等。同时,还可以自定义函数和宏来扩展功能。 10. **模板调试** Freemarker提供了一个调试模式,可以帮助...

    freemarker中文学习资料

    - **Map对象**:Freemarker支持Java Map对象作为数据模型,键值对可以通过模板语法访问。 - ** Beans**:可以直接使用Java Bean对象,属性可以通过`.`操作符访问。 - **List和集合**:列表和集合可以通过`&lt;#list&gt;...

    freemarker

    2. **数据模型(Data Model)**:数据模型是Freemarker用来渲染模板的数据源,它可以是Java对象、Map、List等任何形式。在Java中,通常通过`ModelAndView`或`Map`将数据传递给Freemarker。 3. **Freemarker指令...

    freemarker生成xml示例

    在这个模板中,`&lt;#list&gt;`指令遍历`persons`列表,而`${person.name}`和`${person.age}`则将Java对象的属性值插入到XML中。 3. **Freemarker配置(Configuration)**:设置Freemarker的工作环境,例如模板文件的路径...

    Freemarker通用select下拉框

    这里的`#list`是Freemarker的迭代指令,遍历`dropdownList`中的每一项,并将`key`和`value`分别插入到`&lt;option&gt;`的`value`和文本内容中。 为了实现通用性,我们需要一个方法或服务在后端生成这个`dropdownList`,...

    FreeMarker相关学习文档

    3. 循环结构:`&lt;#foreach item in list&gt;`,遍历列表或数组。 4. 赋值语句:`&lt;#assign var = value&gt;`,定义变量。 5. 注释:`&lt;!--#comment--&gt;`,用于模板中的注释。 四、FreeMarker在Web开发中的应用 1. JSP替代:...

    新手理解FreeMarker的Project

    - **循环**:`&lt;#list&gt;` 用于遍历集合,如数组、列表或映射的键值对。 - **内置函数**:如`length()`计算长度,`join()`连接字符串等,文档`内置函数及用法.doc`应详细阐述了这些函数的使用。 4. **创建简单...

    freemarker操作手册-完整freemarker教程

    - 数据模型:Freemarker与后台代码交互,获取数据并封装成Map对象,这些对象在模板中通过键值对访问。 - 模板:使用FTL(Freemarker Template Language)编写,包含静态文本和变量/指令。 4. **模板指令** - `#...

    Freemarker语法规则教程

    - 遍历Map:`&lt;#list map?keys as key&gt;`,其中`?keys`用于获取Map的所有键。 这些操作使得在模板中处理复杂的数据结构变得更加简单。 #### 八、输出变量 Freemarker支持输出模型中的顶层变量。 - **输出顶层变量...

    FreeMarker+中文手册

    - **列表和迭代**:`&lt;#list&gt;`指令用于遍历集合、数组或Map,输出其内容。 - **条件语句**:`&lt;#if&gt;`、`&lt;#elseif&gt;`、`&lt;#else&gt;`用于条件判断。 - **异常处理**:`&lt;#try&gt;`、`&lt;#catch&gt;`、`&lt;#finally&gt;`用于捕获和处理模板...

    Freemarker小demo

    -- 使用Freemarker遍历JSON数组 --&gt; &lt;#list data.array as item&gt; ${item.property} &lt;/#list&gt; &lt;!-- 示例HTML截取 --&gt; ${truncateHtml(originalHtml, 100)} ``` 这个模板展示了如何展示JSON数据中的标题和...

    FreeMarker手册.pdf

    数据模型可以是Java对象、集合、Map等,它们通过模板变量在模板中引用。 3. **模板语言**:FreeMarker的模板语言由一系列控制结构(如条件语句、循环)、表达式(用于访问数据模型中的属性)和函数组成。例如,`...

    freemarker 2.3.18 中文手册

    9. **条件判断和循环**:`&lt;#if&gt;`、`&lt;#else&gt;`、`&lt;#elseif&gt;`用于条件判断,`&lt;#foreach&gt;`遍历集合,`&lt;#list&gt;`则提供更灵活的列表处理。 10. **逻辑运算和比较**:Freemarker支持基本的逻辑运算符(`&&`、`||`、`!`)和...

Global site tag (gtag.js) - Google Analytics