添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

数据模型——方法 .

方法变量在存于实现了 TemplateMethodModel 接口的模板中。这个接口包含一个方法: TemplateModel exec(java.util.List arguments) 。当使用 方法调用表达式 调用方法时, exec 方法将会被调用。形参将会包含FTL方法调用形参的值。 exec 方法的返回值给出了FTL方法调用表达式的返回值。

TemplateMethodModelEx 接口扩展了 TemplateMethodModel 接口。它没有添加任何新方法。 事实上这个对象实现这个 标记 接口是给FTL引擎暗示, 形式参数应该直接以 TemplateModel 的形式放进 java.util.List 。否则将会以 String 形式放入list。

注: TemplateMethodModel 接口官方已经不推荐使用,而是推荐使用 TemplateMethodModelEx 这个接口。

例如:下面这个方法,返回第一个字符串在第二个字符串第一次出现时的索引位置, 如果第二个字符串中不包含第一个字符串,则返回-1:

public class IndexOfMethod implements TemplateMethodModelEx {
    public TemplateModel exec(List args) throws TemplateModelException {
        if (args.size() != 2) {
            throw new TemplateModelException("Wrong arguments");
        return new SimpleNumber(
            ((String) args.get(1)).indexOf((String) args.get(0)));
Map dataMap = new HashMap();
dataMap.put("indexOf", new IndexOfMethod());
Template template = cfg.getTemplate("a.ftl");
StringWriter out = new StringWriter();
template.process(dataMap, out);
out.flush();
System.out.println(out.getBuffer().toString());

a.ftl文件内容为:${indexOf("met", "something")}

将会输出:2

如果需要访问FTL运行时环境(读/写变量,获取本地化信息等),则可以使用Environment.getCurrentEnvironment() 来获取。

freemarker自定义方法官网手册实现方法调用方法官网手册数据模型——方法.方法变量在存于实现了TemplateMethodModel接口的模板中。这个接口包含一个方法:TemplateModel exec(java.util.List arguments)。当使用方法调用表达式调用方法时,exec方法将会被调用。形参将会包含FTL方法调用形参的值。exec方法的返回值给出了FTL方法调用表达式的返回值。TemplateMethodModelEx接口扩展了TemplateMethodModel接
要想使用Freemarker支持的自定义方法,需要实现freemarker.template.TemplateMethodModel接口,然后将方法对象放入到Freemarker的数据模型中,这样在ftl文件中便可以像使用Freemarker内置方法一样使用该方法了。 [code="java"]/** * Freemarker定义方法 * 实现response.encode...
<#assign list = sqlt.sqlQueryForList("todo_list.getList")> 在sql文件夹下创建todo_list.sql文件,书写sql语句 -- [getList] 获取列表信息 select * from "list" ORDER BY seq 1.list = sqlt.sqlQueryForList("t... <#assign var1 = sort_int(var)/> 实现一个自定义函数 在java中定义一个类,实现TemplateMethodModelEx,并实现其exce方法 public class SortMethod implements TemplateMethodModelEx {
最近在项目开发中使用了freemarker,并在前台显示文本时遇到这样一个需求,当长度超过10个字时只显示出前面10个字,并在后面加...。这里就可以在freemarker中实现一个自定义方法变量。 实现自定义方法变量基本步骤: 1.先实现TemplateMethodModel或TemplateMethodModelEx接口(TemplateMethodModelEx 继承自TemplateMethodModel 接口,我这里使用的是TemplateMethodModelEx接口),再覆盖该接口的Ob..
在项目中有一个需求,每个物品有一个guid,存在数据库中,而在页面上需要显示一个对应的业务数据值,暂且叫做serverId,serverId是通过guid移位计算得来。serverId只需要显示,后台并不需要使用。 因为serverId在后台用不到,所以就没有使用VO字段来存储,项目使用了Freemarker作为view层的模板引擎。了解到Freemarker的一个特点是具有很多内置的功能强...
Freemarker中如何遍历List摘要:在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户。那么在Freemarker中如何遍历List,并对List中数据进行适当的排序呢?通过下文的介绍,相信您一定会找到答案。 一、Freemarker中list指令简单介绍要想在Freemarker中遍历list,必须通过使用lis...