• 关于FreeMarker自定义TemplateDirectiveModel


    ava代码如下: 

    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(排行模式1、2、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. }    



    页面引用有多种方法: 
    一: 

    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()> 

    推荐用第一种

  • 相关阅读:
    解析#pragma指令
    查看内核版本和发行版本

    unix 环境高级编成 apue.h ,apueerror.h的代码
    类string的构造函数、拷贝构造函数和析构函数 (转)
    归并排序
    C++ 中调用其他应用程序的方法
    [MySQL] MySQL的Grant命令
    static的作用
    白话经典算法系列之七 堆与堆排序 (转)
  • 原文地址:https://www.cnblogs.com/dixinyunpan/p/5786982.html
Copyright © 2020-2023  润新知