Idea配置FreeMarker
一张图就搞定了,配置好之后,在重启就好了

FreeMarker的switch用法
FreeMarker的三目运算符的基本语法是:
<#switch value> <#case refValue>...<#break> <#case refValue>...<#break> <#default>... </#switch>
使用例子如下:
FreeMarker的代码
<#assign xNum = 30> <#switch xNum> <#case 10> xNum等于10 <#break> <#case 20> xNum等于20 <#break> <#default> xNum不等于10也不等于20 </#switch>
借助上面的在线测试网址,此时结果就是

FreeMarker的#if,#elseif,#else
FreeMarker的三目运算符的基本语法是:
<#if condition>... <#elseif condition2>... <#elseif condition3>... <#else>... </#if>
使用例子如下:
FreeMarker的代码
<#assign hello = 'MONTH'> <#if hello == 'MONTH'> 月 <#elseif hello == 'QUARTER'> 季 <#elseif hello == 'HALF_A_YEAR'> 半年 <#elseif hello == 'YEAR'> 年 <#else> / </#if>
借助上面的在线测试网址,此时结果就是

FreeMarker的三目运算符
FreeMarker的三目运算符的基本语法是:(true)?string('true', 'false')
使用例子如下:
FreeMarker的代码
<#assign hello = 0>
${(hello == 0)?string('等于0','不等于0')}
<#assign world = 1>
${(world == 0)?string('等于0','不等于0')}
借助上面的在线测试网址,此时结果就是

FreeMarker的!符号
!和${}配置使用,如果没有变量,那么就添加!符号后面的值为默认值
使用例子如下:
FreeMarker的代码
<#assign user = "itqiankun.com">
<h1>Welcome ${user!"Anonymous"}!</h1>
<#assign user = "itqiankun.com">
<h1>Welcome ${hello!"Anonymous"}!</h1>
借助上面的在线测试网址,此时结果就是

FreeMarker的??符号
??的作用是在变量名后面来判断一个变量是否存在
使用例子如下:
FreeMarker的代码
<#assign cc = "itqiankun.com">
<#if cc??><h1>Welcome ${cc}</h1></#if>
<#if ss??><h1>Welcome ${ss}</h1><#else>no_one</#if>
借助上面的在线测试网址,此时结果就是

FreeMarker的#assign使用
#assign在开发里面经常使用的方式就是定义一个能够被FreeMarker语法识别的变量,基本语法是:<#assign name=value>
使用例子如下:
FreeMarker的代码
<#assign seasons = ["winter", "spring", "summer", "autumn"]>
${seasons[0]}
${seasons[1]}
${seasons[2]}
${seasons[3]}
借助上面的在线测试网址,此时结果就是

FreeMarker的集合使用
获取list的size
Java代码:
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Bill");
list.add("Helen");
Freemarker代码:
<!--返回list的大小为 3-->
${list?size}
FreeMarker得到List长度的问题
就比如取得fields的长度的FreeMarker语法是:${fields?size}
<#if fields?size>0 > </#if>
但是此时报错了,说不是boolean类型,
Java backtrace for programmers: ---------- freemarker.core.NonBooleanException: Error on line 132, column 22 in viewEntity_js.ftl Expecting a boolean (true/false) expression here Expression fields?size does not evaluate to true/false it is an instance of freemarker.template.SimpleNumber at freemarker.core.Expression.isTrue(Expression.java:150)
解决方法就是加一个括号
<#if (fields?size>0) > </#if>
遍历List
Java代码:
public class Animal {
private String name;
private float price;
public Animal(String name, float price) {
this.name = name;
this.price = price;
}
... getter/setter ...
}
List<Animal> animals = new ArrayList<Animal>();
animals.add(new Animal("snake", 100));
animals.add(new Animal("bird", 120));
animals.add(new Animal("dragon", 999));
Freemarker代码:
<table>
<tr>
<th>名称</th>
<th>价格</th>
</tr>
<#list animals as being>
<tr>
<td>${being.name}<td>
<td>${being.price}</td>
</tr>
</#list>
</table>
遍历Map
Java代码:
Map<String,Object> myMap = new HashMap<String,Object>();
myMap.put("title", "Map Featch");
myMap.put("version", "v1.2.0");
Freemarker代码:
<select>
<#list map?keys as k>
<option value="${k}"> ${map[k]} </option>
</#list>
</select>
List遍历中的下标序号
通过list的一个属性_index来搞定
java代码
List<String> list = new ArrayList<String>();
list.add("Bill");
list.add("Helen");
Freemarker代码:
<#list list as a>
<p>${a_index}</p>
</#list>
取List中第i个元素的值
Java代码
List<String> list = new ArrayList<String>();
list.add("Bill");
list.add("Helen");
Freemarker代码
${list[i]}
嵌套时前面要有括号,如下,将字符串变成list,然后取第i个元素的值
Java代码
String str = "Bill,Helen,Tom";
Freemarker代码
${(str?split(","))[i]}
List的嵌套
<#list jsskList as jsskVO>
<#list kcList as kcVO>
<#if kcVO.kch=jsskVO.kch> (kcVO里有编号和名称,而jsskVO里只有编号)
${kcVO.kcm}
</#if>
</#list>
</#list>
FreeMarker里面的List排序
通过.sort_by()来进行升序
<#list list?sort_by("字段") as x>
${x}
</#list>
通过.sort_by()?reverse来进行降序
<#list list?sort_by("字段")?reverse as x>
${x}
</#list>