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