<#import "inner.ftl" as inner />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<#--good从后台获取-->
${good}<br>
<br>--------------------1.关于null------------------------------------<br>
<#--1.关于null-->
<#--freemarker中出现null值(空字符串没事),属性名写错,这两种情况会报错"is undefinded",在后面加!号可避免报错,!后写显示的内容-->
<#--如果使用对象导航,!只会判断最后一个是否为空,如果到导航中的某个对象为空依然会报错,所以在导航中最好使用括号把要判断的都概括起来-->
${good.gnames!}<br><#--正确-->
${good.gnames!'没有'}<br> <#--正确-->
${good.gnames!11}<br><#--正确 -->
${(good.gnames.ddd)!}<br><#--全括起来,gnames为null也不会报错'is undefined' -->
<br>---------------------2.关于??-----------------------------------<br>
<#--2.关于?? 判断对象不是否有值,返回值为 布尔类型,不可通过${}在页面输出,可做为判断条件-->
<#--页面只可以输出3中类型:string, date , number-->
<#-- ${(a.b)??} 这么写会报错:Expecting a string, date or number here, Expression (a.b)?? is instead.....-->
${(good.gname)???string}<br><#--这么写可以输出'true'或'false' !!注意string s不可以大写-->
<br>---------------------3.关于if语句-----------------------------------<br>
<#--3.关于if语句 ,if判断的条件,不需要用${}-->
<#if (a.b)??>
${(a.b)???string}为空;
<#elseif !(a.b)??>
${(a.b)???string}取反不为空;
<#else>
判断错误;
</#if>
<br>---------------------4.关于自定义指令#macro-----------------------------------<br>
<#--4.关于自定义指令#macro 调用自定义指令@test-->
<#--第一个参数是指令名称 后面是参数列表,参数之间用,或空格隔开-->
<#--调用时传入参数名称要么全写 要么都不写,(参数列表中的默认值可以不写,写了默认值就被赋值为传入的值)-->
<#macro test a b c d=4>
${a}-${b}-${c}-${d}
</#macro>
<@test 1 2 3 5></@test><br>
<@test a=1 b=2 c=3></@test><br>
<#--<#nested>可以调用自定义指令中的内容-->
<#macro test1 num=3>
<#list 1..num as n>
<#nested n/>
</#list>
</#macro>
<@test1;n><#--;n可以调用自定义指令中的参数-->
${n}<input type="button" value="按钮">
</@test1 >
<#--#assign定义的是全局变量,#local只能用在macro中,定义的是局部变量-->
<#assign e='哈哈0'>
<#macro test2 >
<#local e='哈哈1'>
<#assign e='哈哈2'>
${e}<br><#--这里显示local定义的局部变量的 值-->
</#macro>
<@test2/>
${e}<br><#--这里显示assign定义的局部变量的 值-->
<@inner.qqq/>
<br>---------------------------------------------------------<br>
<#--if list 语句后直接写对象名称,不需要写${},但是方法体内需要写${}-->
<#list goodList as good >
-${good.gname}-<br>
</#list>
<#if good.gid gt 1>
${good.gid}大于1;
<#elseif good.gid gt -1>
${good.gid}大于-1;
<#else>
${good.gid}大于-2;
</#if>
<#macro select id,name>
<select id="${id}" name="${name}">
<#list goodList as good>
<option value="${good.gid}">${good.gname}</option>
</#list>
</select>
</#macro>
<@select id="1" name="one">
</@>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<#--good从后台获取-->
${good}<br>
<br>--------------------1.关于null------------------------------------<br>
<#--1.关于null-->
<#--freemarker中出现null值(空字符串没事),属性名写错,这两种情况会报错"is undefinded",在后面加!号可避免报错,!后写显示的内容-->
<#--如果使用对象导航,!只会判断最后一个是否为空,如果到导航中的某个对象为空依然会报错,所以在导航中最好使用括号把要判断的都概括起来-->
${good.gnames!}<br><#--正确-->
${good.gnames!'没有'}<br> <#--正确-->
${good.gnames!11}<br><#--正确 -->
${(good.gnames.ddd)!}<br><#--全括起来,gnames为null也不会报错'is undefined' -->
<br>---------------------2.关于??-----------------------------------<br>
<#--2.关于?? 判断对象不是否有值,返回值为 布尔类型,不可通过${}在页面输出,可做为判断条件-->
<#--页面只可以输出3中类型:string, date , number-->
<#-- ${(a.b)??} 这么写会报错:Expecting a string, date or number here, Expression (a.b)?? is instead.....-->
${(good.gname)???string}<br><#--这么写可以输出'true'或'false' !!注意string s不可以大写-->
<br>---------------------3.关于if语句-----------------------------------<br>
<#--3.关于if语句 ,if判断的条件,不需要用${}-->
<#if (a.b)??>
${(a.b)???string}为空;
<#elseif !(a.b)??>
${(a.b)???string}取反不为空;
<#else>
判断错误;
</#if>
<br>---------------------4.关于自定义指令#macro-----------------------------------<br>
<#--4.关于自定义指令#macro 调用自定义指令@test-->
<#--第一个参数是指令名称 后面是参数列表,参数之间用,或空格隔开-->
<#--调用时传入参数名称要么全写 要么都不写,(参数列表中的默认值可以不写,写了默认值就被赋值为传入的值)-->
<#macro test a b c d=4>
${a}-${b}-${c}-${d}
</#macro>
<@test 1 2 3 5></@test><br>
<@test a=1 b=2 c=3></@test><br>
<#--<#nested>可以调用自定义指令中的内容-->
<#macro test1 num=3>
<#list 1..num as n>
<#nested n/>
</#list>
</#macro>
<@test1;n><#--;n可以调用自定义指令中的参数-->
${n}<input type="button" value="按钮">
</@test1 >
<#--#assign定义的是全局变量,#local只能用在macro中,定义的是局部变量-->
<#assign e='哈哈0'>
<#macro test2 >
<#local e='哈哈1'>
<#assign e='哈哈2'>
${e}<br><#--这里显示local定义的局部变量的 值-->
</#macro>
<@test2/>
${e}<br><#--这里显示assign定义的局部变量的 值-->
<@inner.qqq/>
<br>---------------------------------------------------------<br>
<#--if list 语句后直接写对象名称,不需要写${},但是方法体内需要写${}-->
<#list goodList as good >
-${good.gname}-<br>
</#list>
<#if good.gid gt 1>
${good.gid}大于1;
<#elseif good.gid gt -1>
${good.gid}大于-1;
<#else>
${good.gid}大于-2;
</#if>
<#macro select id,name>
<select id="${id}" name="${name}">
<#list goodList as good>
<option value="${good.gid}">${good.gname}</option>
</#list>
</select>
</#macro>
<@select id="1" name="one">
</@>
</body>
</html>