freemarker语法完整版(7)

2019-03-29 13:45

具体到和webwork整合,因为本身webwork提供了整合servlet,如果要增加全局共享变量,可以通过修改com.opensymphony.webwork.views.freemarker.FreemarkerServlet来实现,我们可以在这个servlet初始化的时候来初始化全局共享变量 与webwork整合配置 配置web.xml

freemarker

com.opensymphony.webwork.views.freemarker.FreemarkerServlet

TemplatePath /

NoCache true

ContentType text/html

template_update_delay 0

default_encoding GBK

number_format

0.##########

1

freemarker *.ftl

E高级方法 自定义方法

${timer(\

${timer(\

在模板中除了可以通过对象来调用方法外(${object.methed(args)})也可以直接调用java实现的方法,java类必须实现接口TemplateMethodModel的方法exec(List args). 下面以把毫秒的时间转换成按格式输出的时间为例子

public class LongToDate implements TemplateMethodModel {

public TemplateModel exec(List args) throws TemplateModelException { SimpleDateFormat mydate = new SimpleDateFormat((String) args.get(0))); return mydate.format(new Date(Long.parseLong((String)args.get(1))); } }

将LongToDate对象放入到数据模型中 root.put(\模板里使用 <#assign x = \

输出

2001-10-12 5:21:12 2001-10-12

自定义 Transforms

实现自定义的<@transform>文本或表达式的功能,允许对中间的最终文本进行解析转换

例子:实现<@upcase>str 将str转换成STR 的功能

代码如下: import java.io.*;

import java.util.*; import freemarker.template.TemplateTransformModel; class UpperCaseTransform implements TemplateTransformModel { public Writer getWriter(Writer out, Map args) { return new UpperCaseWriter(out); } private class UpperCaseWriter extends Writer { private Writer out; UpperCaseWriter (Writer out) { this.out = out; } public void write(char[] cbuf, int off, int len) throws IOException { out.write(new String(cbuf, off, len).toUpperCase()); } public void flush() throws IOException { out.flush(); } public void close() { } } } 然后将此对象put到数据模型中

root.put(\

在view(ftl)页面中可以如下方式使用

<@upcase> hello world

打印输出: HELLO WORLD

F.Built-ins

${x?upper_case} – 小写变大写 ${test?html} - 转换为HTML编码格式 ${repeat(\– 复制B次A Example: ${test?html}

${test?upper_case?html}

Assuming that test stores the string ``Tom & Jerry'', the output will be: Tom & Jerry TOM & JERRY ---------

${repeat(\

will print: :WhatWhatWhat

1. String内置的JavaScript转换: js_string 用途:用于JavaScript转义,转换',\换行等特殊字符 模板: 输出:

2.内置的默认值处理:default 用途: 用于处理默认值 模本:

User: ${userLogin.name?default(\

${(employee.department.manager.name)?default(\输出:

User: Anonymous  

注,可以对整个对象树加上(),再用内置处理器这种方便的做法,偶也是最近刚学会的,以前一直用很傻的方法做.....

3. Sequence内置的计数器: xxx_index 用途:显示序号 模板:

<#list employees as e> ${e_index}. ${e.name} 输出: 1. Readonly 2. Robbin

4. Sequence内置的分段器: chunk 用途:某些比较BT的排版需求 模板:

<#assign seq = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']> <#list seq?chunk(4) as row>

<#list row as cell>${cell}


freemarker语法完整版(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第15期中国企业家特训班名录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: