Freemarker 遍历List,Map!
http://echowhere.blog.sohu.com/40872593.html
近来和朋友做了个项目,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>