`

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

    博客分类:
  • java
阅读更多

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>

分享到:
评论

相关推荐

    基于Freemarker模板的代码生成器前台页面模板文件

    Freemarker模板中的`&lt;#list&gt;`指令用于遍历数据集合,`&lt;#if&gt;`、`&lt;#else&gt;`则用于条件判断,而`&lt;@include&gt;`可以包含其他公用部分的模板。 2. **EditPage.ftl**:编辑页面模板,用于展示和修改已有数据。通常会包含表单...

    MyBatisPlus代码生成器自定义模板时的模板文件

    - 配置生成器:在配置文件(如generatorConfig.xml)中指定自定义模板的位置,使代码生成器使用新的模板进行生成。 2. **常用模板及作用**: - `Entity.java.ftl`:定义实体类的模板,包括字段、getter/setter...

    freemarker模板使用

    在这个"freemarker模板使用"的讨论中,我们将深入探讨Freemarker的核心概念、语法以及如何在实际项目中进行图片插入。 1. **核心概念**: - **模板(Template)**:Freemarker模板是包含固定文本和变量的文本文件...

    freemarker自定义分页标签宏

    在Controller中,我们需要根据请求参数(如`page`)实例化`Pager`对象,获取当前页的数据并传递给FreeMarker模板。模板接收到数据后,通过调用`paging`宏生成分页HTML。 总结起来,FreeMarker自定义分页标签宏的...

    spring mvc freemarker 自定义标签

    在上述`FreemarkerDemo`项目中,你可能找到了类似的代码示例,包括Java代码(如`HelloWorldDirective`)和Freemarker模板文件(`.ftl`)。这个项目可能还包括了如何设置Spring MVC配置以支持自定义标签的步骤,以及...

    freemarker根据模版生成文件使用例子

    它包含了如`className`、`tableName`、`classPath`和`properties`等属性,这些属性用于在模板中填充具体的数据,如类名、表名、类路径及属性列表,这些都是生成配置文件时所必需的信息。 #### 3. 基本类`...

    实现通过jfinal框架自动扫描freemarker的自定义标签.zip

    5. **使用自定义标签**:完成上述步骤后,你就可以在FreeMarker模板中使用自定义标签了。在模板文件中,自定义标签通常以`&lt;@yourTag&gt;`的形式出现。 以下是实现这个功能的一些关键代码片段: ```java // 自定义标签...

    基于FREEMARKER模板的数据采集系统

    压缩包中的“0109待确认稿-一种基于FREEMARKER模板的数据采集系统及采集方法.docx”很可能是一份详细的设计文档或技术报告,涵盖了系统的架构、实现步骤、使用的技术栈以及具体的数据采集和处理流程。文件名中的“待...

    FREEMARK自定义方法

    - **描述**: 提供了关于Freemarker的一些基本介绍,并且提到了如何在Freemarker模板语言(FTL)中调用自定义的方法。 ### 二、Freemarker自定义方法实现原理 Freemarker 是一个基于 Java 的模板引擎,用于生成文本...

    使用freemarker扩展struts标签

    6. **在模板中使用标签**: 最后,在你的FreeMarker模板文件中,你可以像使用其他内置标签一样使用你的自定义标签。 通过这种方式,开发者可以创建出高度定制的UI组件,提高代码的可读性和可维护性。自定义标签使得...

    利用FreeMarker生成word文件例子

    在Java开发中,利用FreeMarker生成Word文件可以极大地提高效率,尤其在需要批量生成或者自定义模板的情况下。以下是对这个主题的详细阐述: ### FreeMarker简介 FreeMarker是一个开源的、基于模板的Java库,它将...

    freemarker Demo 适用于freemarker初学

    在Struts2的Action类中,你可以创建一个Model对象,填充数据,然后在返回结果时,指定对应的Freemarker模板,如`return "success.ftl"`。 7. **模板变量和表达式** Freemarker支持丰富的表达式,如`${user.name}`...

    一个意义深刻 FreeMarker 入门例子之HelloWord

    在FreeMarker模板文件(例如`HelloWord.ftl`)中,你可以看到类似于`${variable}`这样的表达式,它们是FreeMarker的动态占位符。当你在Java代码中设置`variable`为具体值,FreeMarker在渲染时会将其替换为对应的值。...

    freemarker java模板技术 很详细的注释

    - **分离视图和逻辑**: Freemarker模板与Java代码分离,使得开发人员可以专注于业务逻辑,而设计师可以专注于页面设计。 - **高性能**: Freemarker编译模板为高效的Java代码,执行效率高。 - **灵活性**: 支持...

    freemaker简单小例子+ECharts例子

    在本示例中,“freemaker简单小例子”可能是指如何在Freemarker模板中插入动态数据并渲染成页面。基本流程包括以下几个步骤: 1. **创建Freemarker模板**:在`.ftl`文件中,你可以定义HTML结构,并使用`${...}`或`...

    freemarker官方中文帮助文档

    2. **模板语言**:Freemarker模板语言包括控制结构(如`&lt;#if&gt;`、`&lt;#foreach&gt;`)、逻辑表达式、变量引用(`${...}`)和内置函数。这些元素允许你根据数据模型动态生成输出。 3. **数据模型与变量**:Freemarker可以...

    freemarker代码

    在Spring MVC配置中,我们需要指定Freemarker模板文件的位置,以便Spring MVC能够找到并加载它们。 五、模板缓存 Freemarker支持模板缓存,以提高性能。你可以根据项目需求配置是否启用缓存,以及缓存策略。 六、...

    freemarker中文手册.rar

    3. 标记:Freemarker模板中使用特定的标记(如`&lt;#if&gt;`、`&lt;#foreach&gt;`等)来控制流程,以及`${}`或`#{}`来表达变量。 二、Freemarker语法 1. 变量表达式:`${variable}`用于输出变量的值,`#{variable}`用于注释。 2...

    freemarker获取数据

    9. 自定义方法:通过实现`TemplateMethodModel`接口,可以在模板中调用自定义方法,扩展Freemarker的功能。 三、Freemarker的高级特性 1. 链接和URL编码:Freemarker提供了`@url`指令和`?html`操作符,用于生成...

    freemarker-2.3.28.jar

    在实际应用中,开发者通常会将这个JAR文件添加到项目的类路径(classpath)中,以便在运行时能够解析和执行Freemarker模板。如果在Eclipse中使用,可以将该JAR文件添加到项目的构建路径,确保项目能正确识别并利用...

Global site tag (gtag.js) - Google Analytics