freemark(2)list,局部变量,计算,函数

345 阅读1分钟
@Test
	public void testAssign() {
//		<#assign epAmount=0><#list amount as amt>epAmount=epAmount+${amt}</#list>${epAmount}
		//取list第一个直接[0];如果list里面放的Map,可以直接点属性
		//函数前直接加问号即可,例如:?replace
		//设置本地变量<#assign epAmount=0> ; 注意: 边量的计算是在变量符号里,且不需要美元取值符号,<>里都不需要再用${}取值 <#assign epAmount=epAmount+amt>
		String template = "${date_startDate[0]?replace(\"-\",\"/\")}-${date_endDate[0]?replace(\"-\",\"/\")}期间,交易时间异常,<#assign epAmount=0><#list amount as amt><#assign epAmount=epAmount+amt></#list>合计${epAmount}元,<#assign epCount=0><#list count as cnt><#assign epCount=epCount+cnt></#list>${epCount}笔。";
		Map<String,Object> freeParaMap = new HashMap<String,Object>();
		//交易时间
		List<String> date_startDate=new ArrayList<String>();
		date_startDate.add("2018-08-30");
		freeParaMap.put("date_startDate", date_startDate);
		
		List<String> date_endDate=new ArrayList<String>();
		date_endDate.add("2018-09-30");
		freeParaMap.put("date_endDate", date_endDate);
		
		
		//每10分钟交易金额
		List<Integer> amount=new ArrayList<Integer>();
		amount.add(600);
		amount.add(5000);
		freeParaMap.put("amount", amount);
		//每10分钟交易笔数
		List<Integer> count=new ArrayList<Integer>();
		count.add(2);
		count.add(3);
		freeParaMap.put("count", count);
		
		System.out.println(JSON.toJSONString(freeParaMap));
		//2018/08/30-2018/09/30期间,交易时间异常,合计5,600元,5笔。
		System.out.println(freemarkerProcess(freeParaMap, template));
	}
	
	
	public static String freemarkerProcess(Map input, String templateStr) {
		StringTemplateLoader stringLoader = new StringTemplateLoader();
		String template = "content";
		stringLoader.putTemplate(template, templateStr);
		Configuration cfg = new Configuration();
		cfg.setTemplateLoader(stringLoader);
		try {
			Template templateCon = cfg.getTemplate(template);
			StringWriter writer = new StringWriter();
			templateCon.process(input, writer);
			return writer.toString();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}
		return null;
	}