Freemarker如何输出$和html标签等特殊符号

今天在写后台邮件模板的时候,比如要放一些变量标签,比如用户名、验证码什么的都要随机调用的,于是就写了个占位符替换的,比如${userName} ,那么在页面上要给用户提示怎么编辑模板,但是Freemarker默认的是给${} 、#{};两个都处理成标签的,那么如何解决呢? 显示全部

今天在写后台邮件模板的时候,比如要放一些变量标签,比如用户名、验证码什么的都要随机调用的,于是就写了个占位符替换的,比如${userName} ,那么在页面上要给用户提示怎么编辑模板,但是Freemarker默认的是给${} 、#{};两个都处理成标签的,那么如何解决呢?

1 个回答

默认排序
飞舞九天
免费开源问答源码
0 人赞同了该回答

根据FreeMarker文档里3.1的说明用${r"${foo}"} 可以输出 ${foo},具体见下面说明:

3.1 直接指定值 
使用直接指定值语法让FreeMarker直接输出插值中的值,而不是输出变量值.直接指定值可以是字符串,数值,布尔值,集合和MAP对象. 
1,字符串 
直接指定字符串值使用单引号或双引号限定,如果字符串值中包含特殊字符需要转义,看下面的例子: 
${"我的文件保存在C:\\盘"} 
${'我名字是\"annlee\"'} 
输出结果是: 
我的文件保存在C:\盘 
我名字是"annlee" 
FreeMarker支持如下转义字符: 
\";双引号(u0022) 
\';单引号(u0027) 
\\;反斜杠(u005C) 
\n;换行(u000A) 
\r;回车(u000D) 
\t;Tab(u0009) 
\b;退格键(u0008) 
\f;Form feed(u000C) 
\l;< 
\g;> 
\a;& 
\{;{ 
\xCode;直接通过4位的16进制数来指定Unicode码,输出该unicode码对应的字符. 
如果某段文本中包含大量的特殊符号,FreeMarker提供了另一种特殊格式:可以在指定字符串内容的引号前增加r标记,在r标记后的文件将会直接输出.看如下代码: 
${r"${foo}"} 
${r"C:\foo\bar"} 
输出结果是: 
${foo} 
C:\foo\bar   

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。