Как я могу заставить Velocity выводить больше или меньше, чем без экранирования? - PullRequest
0 голосов
/ 02 апреля 2010

Я пытаюсь заставить Velocity вывести следующий код Javascript:

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

Всякий раз, когда я пытаюсь заставить Velocity печатать> или <, он представляется как & gt; или & lt ;, что мне не помогает, поскольку я пытаюсь заставить его создавать Javascript. Я пробовал: </p>

#set ( $gt = ">" )

Но даже это заканчивается как & gt;

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 08 апреля 2011

У меня была та же проблема с 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
1 голос
/ 02 апреля 2010

Это не поведение по умолчанию, единственная причина, по которой я могу подумать, почему это происходит, - если у вас есть событие ReferenceInsertionEventHandler, настроенное с EscapeHtmlReference, либо в вашем velocity.config, либо в коде инициализации Velocity.

Вот больше информации о событиях

0 голосов
/ 27 августа 2012

Может быть, вы можете использовать альтернативные символы, как описано здесь:

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

Так что попробуйте использовать if (n1 gt n2).

...