如何让Velocity输出大于/小于而不逃避它?

时间:2010-04-01 21:08:23

标签: character-encoding escaping special-characters velocity

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

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

每当我试图让Velocity打印一个&gt;或者&lt;,它表示为&amp; GT;或者&amp; LT;,这对我没有帮助,因为我试图让它产生Javascript。我试过了:

#set ( $gt = ">" )

但即使这样也最终成为&amp; GT;

提前致谢。

3 个答案:

答案 0 :(得分:1)

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

这是more info about events

答案 1 :(得分:1)

我对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

答案 2 :(得分:0)

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

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

因此请尝试使用if (n1 gt n2)