Velocity (VM) 模板:如何禁用 jquery 块
我有阿帕奇速度。 我有一些 jQuery 代码。 我认为 VM 不喜欢我做 $img.css("float","left")
之类的事情。 如何在 HTML/Javascript 块中完全禁用 VM 解析?
谢谢
I have Apache Velocity.
I have some jQuery code.
I think VM doesn't like when I do things like $img.css("float","left")
.
How can I completely disable VM parsing within a block of HTML/Javascript ?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
Velocity 1.7-beta1 现已推出,并且它提供了
#[[don 't parse me!]]#
指令,因此您不必转义 .vm 文件中的一堆代码。对我来说就像一个魅力。
Velocity 1.7-beta1 is now out, and it ships the
#[[don't parse me!]]#
directive, so you don't have to escape a bunch of code in your .vm files.Works for me like a charm.
对于简短的示例,如上面的,如果它不是合法的 Velocity 引用,只需执行 $img,Velocity 将忽略它。
逃避引用很诱人,但这非常奇怪。如果 $img 是真实引用,则 \$img 将显示 $img。但如果 $img 不是 Velocity 引用,则 \$img 将显示 \$img。
最好的选择,特别是如果您有一个不想解析的长文本块,是将其放入单独的文件中并使用 #include,它不会解析包含文本。
#include("file.vm")
这会将“file.vm”直接包含到输出中,而不对其进行解析。 (如果您想包含文本并解析该文本,请使用#parse)。
For short examples, like the above, if it isn't a legitimate Velocity reference, just do $img and Velocity will ignore it.
It's tempting to escape the reference, but this is extremely quirky. If $img is a real reference, then \$img will display $img. But if $img is not a Velocity reference, then \$img will display \$img.
The best bet, especially if you have a long block of text you do not want parsed, is to put it in a separate file and use #include, which does not parse the include text.
#include("file.vm")
This will include "file.vm" directly into the output without parsing it. (If you want to include text and parse that text, use #parse).
查看用户指南,看起来只要您速度中没有名为
$img
的变量,速度解析它应该不会有问题。否则你可以使用\$img
进行转义。至于实际上让解析器像使用 XML 中的 CDATA 标记一样跳过字符串,我不确定如何做到这一点。
Looking at the user guide it looks like as long as you don't have a variable named
$img
in velocity, you shouldn't have a problem with velocity parsing it. Otherwise you can escape with\$img
.As far as actually having the parser skip over the the string as you would with a CDATA tag in XML, I'm not sure how you could do that.
\ 转义是不可靠的。执行:
context.put("D", "$");
然后
${D}img
在即将到来的 1.7 中,有一个新的 #[[ 解析器将完全忽略这个 ]]# 语法。希望 1.7-beta1 很快就会发布。
The \ escaping is unreliable. Do:
context.put("D", "$");
and then
${D}img
In the upcoming 1.7, there is a new #[[ parser will ignore this completely ]]# syntax. Hopefully a 1.7-beta1 will be out soon.
您可以在 Velocity 中转义美元符号,方法是将每个 $ 放在前面用反斜杠签名...
You can escape the dollar sign in Velocity by preceding each $ sign with a backslash...
您可以分配一个变量来解析美元符号。
例如:
现在您可以使用此变量在需要的位置放置美元符号:
请确保 $jQ 变量和 img.css(); 之间有空格> (这样速度就不会尝试将其余部分解释为不同的变量)。如果 $jQ 变量后面紧跟着括号,则不必执行此操作。
这样就可以了:
You can assign a variable to parse the dollar sign.
For example:
Now you can use this variable to place a dollar sign where you need to:
Please ensure there's a space between the $jQ variable and the img.css(); (so that velocity doesn't try to interpret the rest as a different variable). You won't have to do this if a parenthesis follows directly after the $jQ var.
This would be fine:
jquery 中的
$
是jQuery
的简写,因此您可以用jQuery
替换任何$
The
$
in jquery is a shorthand forjQuery
, therefore you can substitute any$
withjQuery