Freemarker学习笔记

2017-03-16  本文已影响0人  walker_liu_fei

模板基础

<#if person??>
   name : ${person.name} 
   age  : ${person.age}
</#if>
<#if object??> 
    object exist
<#else>
       object not exist
<#/if>      

Programmer Guild

定义实现自定义宏

定义实现自定义方法

  1. 首先通过继承TemplateMethodModelEx实现自己要定义的方法类
    <pre>
    public class IndexMethod implements TemplateMethodModelEx {
    @Override
    public Object exec(List arguments) throws TemplateModelException {
    if (arguments.size() != 2) {
    throw new TemplateModelException("Wrong arguments");
    }
    int result = -1;
    if (!(arguments.get(0) instanceof SimpleScalar &&arguments.get(1) instanceof SimpleScalar))
    return new SimpleNumber(result);
    String first = ((SimpleScalar)arguments.get(0)).getAsString();
    String second = ((SimpleScalar)arguments.get(1)).getAsString();

         //arguments.stream().forEach(element -> System.out.println(element));
         return new SimpleNumber(second.indexOf(first));
     }
    

    }
    </pre>

  2. 在向template 传值时,例如将上面的 类
    <pre>
    Map root = new HashMap();
    root.add("indexOf",new IndexMethod());
    </pre>

  3. 在flt 中这样用
    <pre>
    <#assign x = "something">
    ${indexOf("met", x)}
    ${indexOf("foo", x)}
    </pre>

FAQ

Freemarker Cache

上一篇 下一篇

猜你喜欢

热点阅读