【问题标题】:Removing whitespace from the output of a Velocity macro从 Velocity 宏的输出中删除空格
【发布时间】:2016-04-24 17:15:36
【问题描述】:

我正在调用一个名为 #renderwithfallback 的 Velocity 宏,我无法访问它的源代码。但是,此宏调用的结果输出包含前导空格,我无法删除它。

对宏的调用如下所示(注意前面有一个名为 $link.requestBaseURL 的变量):

$link.requestBaseURL#renderwithfallback({'content': $image, 'params':{'renderMode': 'urlBuilderStandard'}})#end

生成的输出如下所示:

http://local.london24.com:8080 /image/policy:1.312:1450097969/Yellow-and-orange-daffodils.jpg?f=default&h=200&w=300&$p$f$h$w=c7ebfa3

如您所见,由于 8080 和正斜杠之间存在空格,URL 已损坏。

我已多次尝试删除此空白,但没有任何效果。我尝试将 .trim() 和 .replace(" ","") 添加到宏调用的末尾,但这没有效果。我还尝试将宏调用分配给这样的 Velocity 变量:

#set($imageLocation = "#renderwithfallback({'content': $image, 'params':{'renderMode': 'urlBuilderStandard'}})#end")

然后在 $imageLocation 上调用 .trim() 方法,但这也不起作用。 #set 行直接打印出宏的输出,然后当我尝试打印出 $imageLocation 甚至 $imageLocation.trim() 时,它在网页上只是空白。

有谁知道我怎样才能摆脱空白?

【问题讨论】:

  • 听起来很奇怪。正如我所看到的,您确保空格实际上来自该宏(否则我建议它一定是由其他原因引起的)。我想知道它是否是一个空白。我不确定.trim() 是否会删除任何空白字符。当然replace 只是删除给定的字符串。因此,请尝试替换 \s\S 之类的正则表达式,甚至是此问题中的其他字符:stackoverflow.com/questions/8255689/…
  • 感谢您的回复。我试过使用 \s 但这也没有效果。我还尝试了 /n 以防空格实际上是由换行引起的,但我也没有运气。
  • 太糟糕了。所以,这里有另一种方法:首先尝试替换您知道实际存在的东西。只是为了防止你追逐幻影。说,.replace("image", "this_works")。如果工作在正则表达式中尝试通配符。首先是.replace("./image", "/image"),然后是.replace("^./", "/")。但请注意,后者仅适用于该宏的输出,因为它查看字符串的开头。

标签: replace velocity trim removing-whitespace


【解决方案1】:

试试$stringUtils.deleteWhitespace(your variable)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2022-01-14
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多