Apache Velocity 模板语言 特殊字符${ $!{ 原样输出问题 转义符 # ! 无效
Velocity版本比较古老,1.7的,没试用新的2.2,不太清除是不是版本导致的问题
先来说下问题,常规情况下需要原样输出这几个特殊字符的话,只要直接在模板中输入就行了,会原样显示,例如
接下来说特殊情况
花括号后面跟了字符 此时就会识别为这是一个取值符,然后报错,生成时同样会报错
网上说的加转义符,加感叹号!,加#,都不可取(仅限1.7版本),虽然不会报错能够正常生成了,但是会把\ # !等额外字符同样输出出来
这是已经生成出来的文本,#和!一样的效果,原本需要得到的效果应该是这样的
虽然有人提过可以模板中建立变量,将变量值赋为特殊字符串,然后再取变量值
例如在中https://my.oschina.net/ouminzy/blog/1837890这篇文章中给出的样例
因为直接写#set(temp="${config.websiteCss}")这样的话,把{和字符隔断,这样就不会识别为取值器,所以作者给他拆分成两段
但是这个就需要每个有需要显示${xxxx}的文本的地方,都要建立两个变量,数量上翻了一倍,关键看着还费劲,强迫症表示一定有直接把${xxx}渲染在文件中的办法
于是找啊找,找不到,突然想到单引号这个神奇的东西!然后.....
得到
完美解决。
这里说下定义变量这个问题,将${xxxxx}这种字符串原样输出,原本不用这么麻烦,直接写在模板里,只要确认context里没有字段名和xxxxx一样就可以了,会原样输出,那为什么还要多此一举呢
因为上面这种结构的模板,完全不满足直接写的条件,首先,原文里他就是一段规则取值器
其次,在${xxxxxx后面紧跟的不是},而是一堆其他字符和特殊符号,直接写上去,编译报错生成报错
最后就是,这种情况还不能换行来处理,因为不确定换行之后会不会引起生成的文件被响应工具解析时会不会出错,所以只能靠定义变量来引入
但是定义的变量还不能直接把整串写完。不然依旧报错,于是才发现了单引号和双引号的区别,这里还要提一句单引号直接用在模板区域里也是无用的
这样依旧会报错,只有定义变量最后一个办法。
最新文章
- Android 应用程序集成Google 登录及二次封装
- Power Designer使用技巧
- PHP-Socket服务端客户端发送接收通信实例详解
- tkinter笔记:scale 尺度 (莫烦python笔记)
- tableau必知必会之如何将 Tableau Server 从 Windows 迁移到 Linux 的方法
- c/c++的输入输出总结
- 全国计算机等级考试题库二级C操作题100套(第75套)
- 如何用CSS让一个容器水平垂直居中?
- JS(Javascript)校验表单项的内容是否合规
- jvm面试 -- 谈谈ClassLoader ,ClassLoader的双亲委派机制 , loadClass和forName的区别
- 第二十七章:五姓七望
- 前端 鼠标一次移动半个像素_小猿圈分享2019年前端JavaScript面试题(三)
- HTML网页设计综合题,网页设计(Html5)试题C卷
- 【深度优先搜索】计蒜客:引爆炸弹
- cnc加工中心保养表_【UG编程】五个CNC加工中心的编程加工小技巧!
- Unity内置管线Projector原理分析
- 深挖那些隐藏在Linux中的炫酷主题
- 阻击 瑞星 和 雅虎助手 的 SVOHOST.exe(第2版)
- 为什么红黑树查询快_面试被问“红黑树”,我一脸懵逼…
- hello heaven
热门文章
- Linux命令——finger
- 沃达丰高管:澳大利亚将于2020年迎来5G
- parse_depend_manifests Could not find dependent assembly LMicrosoft.Windows.Common-Controls
- opencv 拍摄并保存照片
- 如何查询期刊并免费下载论文,纬度学术利用
- mysql b树子节点个数_MySQL 和 B 树的那些事-爱可生
- [PPPOE]RP-PPPOE脚本分析
- android studio DDMS debug process 无法激活,小虫子灰色
- node.js毕业设计安卓在线民宿预定app(程序+APP+LW)
- 2020快手前端暑期实习面经