Velocity的坑——字符串首尾的空格那些事
程序员文章站
2022-05-02 20:30:27
...
最近的项目采用Velocity 1.7作为模板引擎,几天用下来,感觉还是挺爽的。不过今天发现一个坑:macro里面如果有多行的话,输出的字符串前后都被加上了换行和空格。直接上代码:
#macro(getContextPath) #set($root = $context.webApplicationContext.servletContext.contextPath) #if($root.lastIndexOf('/') == 0) #set($root = $root + '/') #end $root #end
调用:
aa#{getContextPath}aa
输出:
aa /web/ aa
中间确实多了空格,我的目的是所有的URL前缀都加上这个context路径,比如:
<a href="#{getContextPath}menu/list">xxx</a>
最终我看到的结果会是这样:
<a href="# /web/ menu/list">xxx</a>
很明显这不符合我的要求。
网上搜了一把,终于在Velocity的WIKI搜到了解决方案,http://wiki.apache.org/velocity/VelocityWhitespaceTruncatedByLineComment
第一种方案,把macro里面的所有语句写成一行(不要换行),在行的末尾加上##
这种方案缺点很明显,程序完全不具备可读性。
第二种方案(会英文的,上面的链接打开,拉到底部,那段就是解决方案),直接上代码:
#macro(getContextPath) #set($root = $context.webApplicationContext.servletContext.contextPath) #if($root.lastIndexOf('/') == 0) #set($root = $root + '/') #end $root## #end
解释下:
行首不能缩进,否则还是有空格;(这是去除字符串前面的空格和换行)
输出数据的行(上面$root是输出数据的)末尾需要加上##(这是去除字符串尾部的空格)
PS:上面的代码是获取Servlet的context路径。
本文出自ITEYE BLOG,转载请注明出处:http://qurey.iteye.com/blog/1944104
推荐阅读
-
那些年干过最坑爹的事笑倒大家
-
python练习题:利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法
-
PHP中去掉字符串首尾空格的方法
-
Javascript中那些你不知道的事之-- false、0、null、undefined和空字符串
-
[那些年踩过的坑]pdf转换为图片的教程(pdf的Base64字符串转换为图片的base64字符串和不通过第三方来实现pdf转图片的Dome)
-
Python切片操作去除字符串首尾的空格
-
PHP中去掉字符串首尾空格的方法_php技巧
-
php 去掉字符串首尾空格的方法
-
php 去掉字符串首尾空格的方法
-
PHP中去掉字符串首尾空格的方法_PHP教程