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> web

相關文章
相關標籤/搜索