freemarker 循环问题

lihao1129 2012-11-16 05:41:44
map.put("length",20);
map.put("data1",obj);
map.put("data2",obj);
...

<#list 1..length as num>
<#list data${num} as info>
${info}
</#list>
</#list>

如何让这个<#list data${num} as info>
得到data1 data2 这样之类的呢,因为这样写报错
...全文
441 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihao1129 2012-11-29
  • 打赏
  • 举报
回复
引用 8 楼 zhaokuo719 的回复:
引用 7 楼 lihao1129 的回复: 引用 6 楼 zhaokuo719 的回复:Java code? 12345678910111213 Map<Object, Object> map = new LinkedHashMap<Object, Object>(); List<String> list1 = new ArrayList<String>();……
麻烦问下,我这个到底是什么问题,我想 是不是 <#assign mmd = "data${mun}"> 相当于是吧 data1..2..3 给到mmd ,其实 只能拿到mmd 里的值,而没有去找map.put? 如果是这样的话 那又有啥方法能循环这个拼接的结果集呢?帮我解决我加分给你 谢谢~
lihao1129 2012-11-28
  • 打赏
  • 举报
回复
引用 8 楼 zhaokuo719 的回复:
引用 7 楼 lihao1129 的回复: 引用 6 楼 zhaokuo719 的回复:Java code? 12345678910111213 Map<Object, Object> map = new LinkedHashMap<Object, Object>(); List<String> list1 = new ArrayList<String>();……
java

	public boolean freeMarkerService(FreemarkerModel type){
		FreeMarkerUtils fs = new FreeMarkerUtils();
		fs.init1();
		Map map = new HashMap();
//		Map modle = new HashMap();
		PageInfo pageInfo;
		try {
			int num = 0;
			for(int i = 0;i < type.getTable_desc().length; i++){
				NameMapUtils.nameMap.put(i, "data"+i);//分配名字
				pageInfo = commonPageController.pageForPageInfo1(
						type.getTable_name()[i], type.getTable_key()[i], map, type.getTable_desc()[i], 7, 0);
//				System.out.println(type.getTable_name()[i]+""+type.getTable_key()[i]+""+type.getTable_desc()[i]+"--------------"+i+"--------------页面list名称:"+NameMapUtils.nameMap.get(i));
//				System.out.println(num+"  "+NameMapUtils.nameMap.get(i)+"=="+pageInfo.getDataList());
				
//				for(int j=0; j<pageInfo.getDataList().size();j++){
//					System.out.println(j+"=j="+pageInfo.getDataList().get(j).toString());
//				}
				map.put(NameMapUtils.nameMap.get(i), pageInfo.getDataList());
				num++;
			}
			map.put("mapLengths",num);
			
//			System.out.println("============================================================================="+num);
			
//			Set key = map.keySet();
//			System.out.println("key===="+key);
			
//			modle.put("modle", map);
//			Set key1 = modle.keySet();
//			System.out.println("key1===="+key1);
			
			if(type.getName().equals(AuthName.NEWSINFO_NAME)){
				// || type.getName().equals(AuthName.EXAMACT_NAME)
				Template t2 = fs.getCfg().getTemplate(type.getName()+"DH.ftl");//导航页
				t2.setEncoding("utf-8");
				String url = AuthName.PUBLIC_FILE_PATH+type.getName()+"/"+type.getName()+"DH"+AuthName.PUBLIC_HTML;
				
				Writer out2 = new OutputStreamWriter(new FileOutputStream(url),"utf-8");
				t2.process(map, out2);
			}
			
			String x = type.getName()+AuthName.PUBLIC_FTL;
			System.out.println("-----------------------------------:"+x);
			Template t = fs.getCfg().getTemplate(x);//首页
			t.setEncoding("utf-8");
//				System.out.println(type.getWrite_file_path());
			Writer out1 = new OutputStreamWriter(new FileOutputStream(type.getWrite_file_path()),"utf-8");
			t.process(map, out1);
			
		} catch (EicException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("Create fail................");
			return false;
		} catch (TemplateException e) {
			e.printStackTrace();
			System.out.println("Create fail................");
			return false;
		} catch (Exception e){
			e.printStackTrace();
			System.out.println("Create fail................");
			return false;
		}
		
		
		System.out.println("Create successfully!!");
		return true;
	}
.ftl

<#list 1..mapLengths as mun>
<#assign mmd = "data${mun}">
<#list [mmd] as info>
<a>${info}</a>
</#list>
</#list>
感觉这个info一直是拿assign里的值一样的,我后台得到的值 ${info.F_NAME_ACTLESSON}取不出来, 0=j={F_UPDATETIME_ACTLESSON=2012-05-28, F_UPDATEUSER_ACTLESSON=superAdmin, F_ISPUBLIC_ACTLESSON=001, F_ORGID_ACTLESSON=its007, F_MEMO_ACTLESSON=基础软件测试, F_NAME_ACTLESSON=基础软件测试, F_TIMEASK_ACTLESSON=120, F_ID_ACTLESSON=2012613301, F_TRAINPAPER_ACTLESSON=null, F_OWNER_ACTLESSON=系统管理, F_DESCRIPT_ACTLESSON=oracle.sql.CLOB@4ee2dd22, F_CONTENT_ACTLESSON=oracle.sql.CLOB@79ab14cd}

模版上:

<#list mm?keys as k>
<#if k=="length">
<#assign length = mm[k]>
<#list 1..length as mun>
<#assign mmd = "data${mun}">
${mmd}
<#list mm[mmd] as ll>
${ll}
</#list>
<br>
</#list>
</#if>
</#list>
你这样 我也试过的,什么值也获取不到,就是一片空白的。我自己模板里<#list [mmd] as info> 改为<#list data1 as info> 就可以用 ${info.F_NAME_ACTLESSON} 获取到数据
lihao1129 2012-11-27
  • 打赏
  • 举报
回复
引用 6 楼 zhaokuo719 的回复:
Java code? 12345678910111213 Map<Object, Object> map = new LinkedHashMap<Object, Object>(); List<String> list1 = new ArrayList<String>(); list1.add("a"); list1.add("b……
意思是这个意思,但是我大概试了下你这样的写法,始终都是只能获得key值,不能获得vlaue
趙大叔 2012-11-27
  • 打赏
  • 举报
回复
引用 7 楼 lihao1129 的回复:
引用 6 楼 zhaokuo719 的回复:Java code? 12345678910111213 Map<Object, Object> map = new LinkedHashMap<Object, Object>(); List<String> list1 = new ArrayList<String>(); l……
你把你的代码贴出来!
趙大叔 2012-11-20
  • 打赏
  • 举报
回复
Map<Object, Object> map = new LinkedHashMap<Object, Object>();
		List<String> list1 = new ArrayList<String>();
		list1.add("a");
		list1.add("b");
		list1.add("c");
		list1.add("d");
		map.put("length", 5);
		map.put("data1", list1);
		map.put("data2", list1);
		map.put("data3", list1);
		map.put("data4", list1);
		map.put("data5", list1);
		model.put("mm", map);
模版上: <#list mm?keys as k> <#if k=="length"> <#assign length = mm[k]> <#list 1..length as mun> <#assign mmd = "data${mun}"> ${mmd} <#list mm[mmd] as ll> ${ll} </#list> <br> </#list> </#if> </#list> 是这个意思吗????
lihao1129 2012-11-19
  • 打赏
  • 举报
回复
引用 2 楼 gaoshanwlm 的回复:
${info.data1}
info 属性应该是obj下的vlaue,data1 是key, 我想要的是 将 <#list 1..length as num> 的num给到下一个list中“data${num}”如这样 <#list data${num} as info> 然后循环key,打出所有key下的vlaue
lihao1129 2012-11-19
  • 打赏
  • 举报
回复
引用 3 楼 ch656409110 的回复:
${map}.get("length"); ${map}.get("data"); ${map}.get("data1"); 这样直接获取不行吗 ,,map 有 ,key 也有。。
这样是可以,但是我想让系统自己循环的给到一个 data然后 有mapkey的时候 就+1 这样 我就是想让<#list 1..length as num> 的这个num 来做 这个循环的事情,不要重复的写key
  • 打赏
  • 举报
回复
${map}.get("length"); ${map}.get("data"); ${map}.get("data1"); 这样直接获取不行吗 ,,map 有 ,key 也有。。
gaoshanwlm 2012-11-16
  • 打赏
  • 举报
回复
${info.data1}
gaoshanwlm 2012-11-16
  • 打赏
  • 举报
回复
${info.} . 属性呀
SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环; 步骤说明: 1.用Microsoft Office Word打开word原件;将文档中需要动态生成的内容,替换为属性名 ${name} 2.另存为,选择保存类型Word 2003 XML 文档(*.xml) 3.用Firstobject free XML editor打开文件,选择Tools下的Indent【或者按快捷键F8】格式化文件内容。左边是文档结构,右边是文档内容; 4. 文档生成后有时需要手动修改,查找第一步中设置的属性名,可能会产生类似${n.....ame}类似的样子,我们将将名字中间的标签删掉,恢复为${name} 5. word模板中有表格,需要循环的位置, 用 标签将第二对 标签(即除表头的w:tr标签后的一对)包围起来 同时表格内的属性例如${name},在这里需要修改为${user.name} (userList是集合在dataMap中的key, user是集合中的每个元素, 类似), 如图: PLUS:若表格之外还有嵌套的循环,也需要用,注意这里的标签不要和某对其他标签交叉,不可以出现这种 6. 标识替换完之后,另存为.ftl后缀文件即可。 代码里是相对有一丢丢复杂的,两层嵌套循环; 总(dataMap) deptName 部门名 list(Table)表的集合 table1(map) table-名字 ${map.table} tableName-中文名 ${map.tableName} columnCount-字段数 ${map.columnCount} recordCount-记录数 ${map.recordCount} listA-List--表格1 map.listA column Model属性——字段名 ${model.column} columnName Model属性——字段中文名 ${model.column} rate Model属性——字段占比 ${model.rate} nullValueCount Model属性——字段空值数 ${model.nullValueCount} listB-List--表格2 map.listB …… listC-List--表格3 map.listC …… table2 table-名字 ${map.table} tableName-中文名 ${map.tableName} columnCount-字段数 ${map.columnCount} recordCount-记录数 ${map.recordCount} listA-List--表格1 map.listA column Model属性——字段名 ${model.column} columnName Model属性——字段中文名 ${model.column} rate Model属性——字段占比 ${model.rate} nullValueCount Model属性——字段空值数 ${model.nullValueCount} listB-List--表格2 map.listB …… listC-List--表格3 map.listC …… table3 ……

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧