關於FreeMarker自定義TemplateDirectiveModel

ava代碼以下: 

web

Java代碼   收藏代碼
  1. import freemarker.core.Environment;    
  2. import freemarker.template.ObjectWrapper;    
  3. import freemarker.template.TemplateDirectiveModel;    
  4.     
  5. /**  
  6.  * FreeMarker自定義宏  
  7.  * 獲取App下載排行列表  
  8.  * 參數包括 length(列表長度) mtypeCode(主類型代碼) typeCode(小類型代碼) rankMode(排行模式一、二、3)  
  9.  * @author shannon  
  10.  *  
  11.  */    
  12. public class FMAppRankDirective implements TemplateDirectiveModel {    
  13.     
  14.     @Resource(name = "appRankService")    
  15.     private AppRankService appRankService;    
  16.         
  17.         
  18.     @SuppressWarnings("unchecked")    
  19.     @Override    
  20.     public void execute(Environment env, Map params, TemplateModel[] loopVars,    
  21.             TemplateDirectiveBody body) throws TemplateException, IOException {    
  22.         //DirectiveUtils是借用jeecms項目中的工具類,主要是由於它集成了一些異常處理功能,     
  23.         //其實徹底能夠不用它,params是個Map,本身經過key取值就能夠了,作一下空值判斷     
  24.         Integer length = DirectiveUtils.getInt("length", params);    
  25.         Integer mtypeCode = DirectiveUtils.getInt("mtypeCode", params);    
  26.         Integer typeCode = DirectiveUtils.getInt("typeCode", params);    
  27.         Integer rankMode = DirectiveUtils.getInt("rankMode", params);    
  28.         ArrayList<App> rankList = appRankService.getRankList(length, mtypeCode, typeCode, rankMode);    
  29.             
  30.         env.setVariable("appRankList", ObjectWrapper.DEFAULT_WRAPPER.wrap(rankList));    
  31.         if (body != null) {    
  32.             body.render(env.getOut());    
  33.         }    
  34.     }    
  35. }    



頁面引用有多種方法: 
一: spring

Java代碼   收藏代碼
  1. <bean id="fp" class="xxxx.tag.FMAppRankDirective"></bean>  
  2.     <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
  3.         此處省略          
  4. <property name="freemarkerVariables">  
  5.             <map>  
  6.                 <entry key="fp" value-ref="fp"/>  
  7.             </map>  
  8.         </property>  
  9.     </bean>  



而後頁面直接用 <@fp 的方式調用, 

二:在頁面上直接導入,如: 
<#assign fp= "xxxx.tag.FMAppRankDirective"?new()> 

推薦用第一種app

相關文章
相關標籤/搜索