注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无线时代辐射无穷

抓紧生宝宝,小心辐射

 
 
 

日志

 
 

在freemarker的模板文件中调用自定义的方法  

2010-01-28 16:39:55|  分类: freemarker |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
freemarker现有的一些内置函数不能满足我们的需求,这些内置函数包括:chunk, is_date, last, root, j_string, contains, is_hash, long, float, ends_with, namespace, matches, time, values, seq_last_index_of, uncap_first, byte, substring, is_transform, web_safe, groups, seq_contains, is_macro, index_of, word_list, int, is_method, eval, parent, xml, number, capitalize, if_exists, rtf, node_type, double, is_directive, url, size, default, is_boolean, split, node_name, is_enumerable, seq_index_of, is_sequence, sort, is_node, sort_by, left_pad, cap_first, interpret, children, node_namespace, chop_linebreak, date, short, last_index_of, is_collection, ancestors, length, trim, datetime, is_string, reverse, c, keys, upper_case, js_string, has_content, right_pad, replace, is_hash_ex, new, is_number, is_indexable, lower_case, string, exists, html, first, starts_with

但freemarker可以自定义方法来达到这一目的:实现的步骤为:
写一个类继承TemplateMethodModel,比如说:
public class TruncateTemplateMethodModel implements TemplateMethodModel {
    public Object exec(List arguments) throws TemplateModelException {
        return arguments.get(0).toString().substring(0,1);
    }
}
然后:
            Map root = new HashMap();
            root.put("truncate",new TruncateTemplateMethodModel();
            Template temp = cfg.getTemplate("a.ftl");
            StringWriter out = new StringWriter();
            temp.process(root, out);
            out.flush();
            System.out.println(out.getBuffer().toString());
a.ftl为:${truncate("abc")}
运行后将会输出: a

若与spring集成的话,也很简单,只要在:*-servlet.xml中加入以下代码即可:
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="suffix" value=".ftl"/>
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="exposeRequestAttributes" value="true"/>
        <property name="exposeSessionAttributes" value="true"/>
        <property name="attributesMap">
          <map>
            <entry key="truncate"><bean class="com.rj8g.linkage.renba.web.TruncateTemplateMethodModel" /></entry>
          </map>
        </property>
    </bean>
  评论这张
 
阅读(1049)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017