freemarker和jsp的比較

1.共享變量

FreeMarker 的共享變量是我最喜歡的「隱藏」功能之一。此功能能夠讓你設置自動添加到全部模板的值。 例如,能夠設置應用程序的名稱做爲共享變量。app

1
2
Configuration configuration = new Configuration();
configuration.setSharedVariable( "app" , "StackHunter" );

而後像任何其餘變量同樣訪問它。jsp

1
App: ${app}

在過去使用共享變量通常引用資源包 而後使用像 ${i18n.resourceBundle.key} 這樣的表達式來獲取值。post

1
2
3
${i18n.countries.CA}
${i18n.countries['CA']}
${i18n.countries[countryCode]}

上面這些行都引用 countries_en.properties 資源包內的 key 「CA」對應的值。你須要執行本身的 TemplateHashModel,而後將其添加爲一個共享變量來實現這一目標。spa

2.支持 JSON

FreeMarker 內置 JSON 支持。 比方說你有如下的 JSON 存儲到變量命名 user 的字符串中。code

1
{ 'firstName': 'John', 'lastName': 'Smith', 'age': 25, 'address': { 'streetAddress': '21 2nd Street', 'city': 'New York', 'state': 'NY', 'postalCode': 10021 }}

使用 ?eval 將從字符串轉換爲一個 JSON 對象,而後像其餘數據同樣在表達式中使用。對象

1
2
<#assign user = user?eval>
User: ${user.firstName}, ${user.address.city}

3.類加載沒有 PermGen 問題

若是你已經開發Java Web應用程序一段時間,那麼對於 JVM 的 PermGen 問題可能並不陌生。因爲 FreeMarker 模板不編譯成類,它們不佔用 PermGen 空間,並不須要一個新的類加載器加載。ci

4.宏定義(相似jsp標籤)很是方便

相關文章
相關標籤/搜索