freemarker 对null 的处理
生活随笔
收集整理的這篇文章主要介紹了
freemarker 对null 的处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
freemarker對null的處理 無非就這幾種?
1 提供默認(rèn)值?
<#if mouse?>?
Mouse found?
<#else>?
也可以直接${mouse?if_exists}?
<#if user.age??>?
//TO DO?
</#if>?
2.忽略null值?
假設(shè)前提:userName為null?
${userName}?? error?
${userName!}? 空白?
${userName!'tivon'}? tivon?
假設(shè)前提:user.name為null?
${user.name},異常?
${(user.name)!},顯示空白?
${user.name!'vakin'},若user.name不為空則顯示本身的值,否則顯示vakin?
${user.name?default('vakin')},同上?
${user.name???string(user.name,'vakin')},同上?
3 list?
<#list userList as user>?
…?
</#list>?
List指令還隱含了兩個循環(huán)變量:?
user_index:當(dāng)前迭代項(xiàng)在所有迭代項(xiàng)中的位置,是數(shù)字值。?
user_has_next:用于判斷當(dāng)前迭代項(xiàng)是否是所有迭代項(xiàng)中的最后一項(xiàng)。?
這2個值也可以控制 null 或者0的出現(xiàn)。?
4<#escape x as x!""></#escape>可以對所有的變量進(jìn)行空值處理,這里是全部替換為空字符串。當(dāng)然也可以替換為其它字符串。?
如果其中某些變量不需要這種替換,可以加入<#noescape></#noescape>標(biāo)簽。?
5 這種為全局配置方法?
配置classic_compatible=true可以滿足一般需要。默認(rèn)情況變量為null則替換為空字符串,如果需要自定義,寫上${empty!"EmptyValue of fbysss"}的形式即可?
a.通過Configuration設(shè)置。Configuration cfg = new Configuration(); cfg.setClassicCompatible(true);//設(shè)置屬性?
b.通過Eviroment設(shè)置。?
?? Environment env = template.createProcessingEnvironment(root, out);?
?? env.setClassicCompatible(true);?
c.通過ftl設(shè)置:在ftl前加入<!--#setting classic_compatible=true-->;?
d.通過Spring配置文件設(shè)置?
<bean id="freemarkerConfig"?
??? class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">?
? <property name="freemarkerSettings">?
??? <props>?
????? <prop key="classic_compatible">true</prop>?
??? </props>?
? </property>?
</bean>?
e.class目錄下添加freemarker.properties文件:加入classic_compatible=true?
(需要struts2或spring)?
舉一反三,其他屬性也可以用類似方法進(jìn)行設(shè)置。?
補(bǔ)充知識點(diǎn):?
Freemarker中對List進(jìn)行排序?
通常我們的排序操作都是通過DAO層來實(shí)現(xiàn)的,如果我們想隨時更改我們的排序,那么就必須修改我們的DAO層代碼,確實(shí)不方便。但Freemarker為我們提供了這樣的排序方法,解決了這個問題。?
1. sort升序排序函數(shù)?
sort對序列(sequence)進(jìn)行排序,要求序列中的變量必須是:字符串(按首字母排序),數(shù)字,日期值。?
<#list list?sort as l>…</#list>?
2. sort_by函數(shù)?
sort_by有一個參數(shù),該參數(shù)用于指定想要排序的子變量,排序是按照變量對應(yīng)的值進(jìn)行排序,如:?
<#list userList?sort_by(“age”) as user>…</#list> ?
age是User對象的屬性,排序是按age的值進(jìn)行的。?
3. reverse降序排序函數(shù)?
??? <#list list? reverse as l>…</#list>?
???? reverse使用同sort相同。reverse還可以同sort_by一起使用?
?????? 如:想讓用戶按年齡降序排序,那么可以這個樣寫?
<#list userList?sort_by(“age”)?reverse as user>…</#list> ?
1 提供默認(rèn)值?
<#if mouse?>?
Mouse found?
<#else>?
也可以直接${mouse?if_exists}?
<#if user.age??>?
//TO DO?
</#if>?
2.忽略null值?
假設(shè)前提:userName為null?
${userName}?? error?
${userName!}? 空白?
${userName!'tivon'}? tivon?
假設(shè)前提:user.name為null?
${user.name},異常?
${(user.name)!},顯示空白?
${user.name!'vakin'},若user.name不為空則顯示本身的值,否則顯示vakin?
${user.name?default('vakin')},同上?
${user.name???string(user.name,'vakin')},同上?
3 list?
<#list userList as user>?
…?
</#list>?
List指令還隱含了兩個循環(huán)變量:?
user_index:當(dāng)前迭代項(xiàng)在所有迭代項(xiàng)中的位置,是數(shù)字值。?
user_has_next:用于判斷當(dāng)前迭代項(xiàng)是否是所有迭代項(xiàng)中的最后一項(xiàng)。?
這2個值也可以控制 null 或者0的出現(xiàn)。?
4<#escape x as x!""></#escape>可以對所有的變量進(jìn)行空值處理,這里是全部替換為空字符串。當(dāng)然也可以替換為其它字符串。?
如果其中某些變量不需要這種替換,可以加入<#noescape></#noescape>標(biāo)簽。?
5 這種為全局配置方法?
配置classic_compatible=true可以滿足一般需要。默認(rèn)情況變量為null則替換為空字符串,如果需要自定義,寫上${empty!"EmptyValue of fbysss"}的形式即可?
a.通過Configuration設(shè)置。Configuration cfg = new Configuration(); cfg.setClassicCompatible(true);//設(shè)置屬性?
b.通過Eviroment設(shè)置。?
?? Environment env = template.createProcessingEnvironment(root, out);?
?? env.setClassicCompatible(true);?
c.通過ftl設(shè)置:在ftl前加入<!--#setting classic_compatible=true-->;?
d.通過Spring配置文件設(shè)置?
<bean id="freemarkerConfig"?
??? class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">?
? <property name="freemarkerSettings">?
??? <props>?
????? <prop key="classic_compatible">true</prop>?
??? </props>?
? </property>?
</bean>?
e.class目錄下添加freemarker.properties文件:加入classic_compatible=true?
(需要struts2或spring)?
舉一反三,其他屬性也可以用類似方法進(jìn)行設(shè)置。?
補(bǔ)充知識點(diǎn):?
Freemarker中對List進(jìn)行排序?
通常我們的排序操作都是通過DAO層來實(shí)現(xiàn)的,如果我們想隨時更改我們的排序,那么就必須修改我們的DAO層代碼,確實(shí)不方便。但Freemarker為我們提供了這樣的排序方法,解決了這個問題。?
1. sort升序排序函數(shù)?
sort對序列(sequence)進(jìn)行排序,要求序列中的變量必須是:字符串(按首字母排序),數(shù)字,日期值。?
<#list list?sort as l>…</#list>?
2. sort_by函數(shù)?
sort_by有一個參數(shù),該參數(shù)用于指定想要排序的子變量,排序是按照變量對應(yīng)的值進(jìn)行排序,如:?
<#list userList?sort_by(“age”) as user>…</#list> ?
age是User對象的屬性,排序是按age的值進(jìn)行的。?
3. reverse降序排序函數(shù)?
??? <#list list? reverse as l>…</#list>?
???? reverse使用同sort相同。reverse還可以同sort_by一起使用?
?????? 如:想讓用戶按年齡降序排序,那么可以這個樣寫?
<#list userList?sort_by(“age”)?reverse as user>…</#list> ?
總結(jié)
以上是生活随笔為你收集整理的freemarker 对null 的处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1281(二分图匹配+增广路)
- 下一篇: 公众号第三方平台开发 - 教程五 代