【问题标题】:How can I get Velocity to output a greater than / less than without escaping it?如何让 Velocity 输出大于/小于而不转义它?
【发布时间】:2010-04-01 21:08:23
【问题描述】:

我正在尝试让 Velocity 输出以下 Javascript 代码:

if ((whichOne+1) <= numCallouts ) {
whichOne = whichOne + 1; } else {
whichOne = 1;
     }

每当我尝试让 Velocity 打印 > 或

#set ( $gt = ">" )

但即便如此,最终也会变成 & gt;

提前致谢。

【问题讨论】:

  • 所以当你做#set ( $gt = "&gt;" )然后$gt你最终得到&amp;gt;?它对我没有这样做,它输出“>”。你用的是哪个版本?

标签: character-encoding escaping special-characters velocity


【解决方案1】:

这不是默认行为,我能想到发生这种情况的唯一原因是,如果您在 velocity.config 或 Velocity 初始化代码中配置了 EscapeHtmlReference 事件 ReferenceInsertionEventHandler

这里是more info about events

【讨论】:

    【解决方案2】:

    我在 Velocity 上遇到了同样的问题 - 但是,问题是我使用 Velocity 作为第三方嵌入式语言,并且无权更改 Velocity 设置。

    不幸的是,我能找到的唯一解决方案是在不显式使用大于/小于的情况下重写代码,诚然这很糟糕,但这一切都是为了让它工作......

    下面是一个解决方法示例,您可以在其中尝试查看一个数字是否大于另一个数字:

    if (n1 > n2) //Doesn't work because velocity turns this into if (n1 &gt; n2)
    
    if (n1 != n2)
    {
        diff = n1 - n2;
        abs = abs(n1 - n2);
        if (diff / abs == 1) //Greater than
        else //if == -1 then less than
    }
    else //Equal
    

    【讨论】:

      【解决方案3】:

      也许您可以使用此处所述的替代符号:

      http://velocity.apache.org/engine/devel/vtl-reference-guide.html#aifelseifelse_-_Output_conditional_on_truth_of_statements

      所以尝试使用if (n1 gt n2)

      【讨论】:

        猜你喜欢
        • 2017-07-02
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多