Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSP中的下划线.js模板_Jsp_Underscore.js - Fatal编程技术网

JSP中的下划线.js模板

JSP中的下划线.js模板,jsp,underscore.js,Jsp,Underscore.js,用于变量插值。不幸的是,这也在JSP(或GSP)中解释。有没有办法在JSP中使用下划线.js模板?根据您链接到的网页: 如果您不喜欢ERB样式的分隔符,可以更改下划线的模板设置>,以使用不同的符号来抵消插值代码 它建议您更改插值和求值正则表达式。 这意味着您可以将用法更改为与JSP不冲突的内容 在jsp页面中添加以下插值和求值设置 _.templateSettings = { interpolate: /\<\@\=(.+?)\@\>/gim, evaluate: /

用于变量插值。不幸的是,这也在JSP(或GSP)中解释。有没有办法在JSP中使用下划线.js模板?

根据您链接到的网页:

如果您不喜欢ERB样式的分隔符,可以更改下划线的模板设置>,以使用不同的符号来抵消插值代码

它建议您更改
插值
求值
正则表达式。
这意味着您可以将用法更改为与JSP不冲突的内容

在jsp页面中添加以下插值和求值设置

_.templateSettings = {
    interpolate: /\<\@\=(.+?)\@\>/gim,
    evaluate: /\<\@(.+?)\@\>/gim,
    escape: /\<\@\-(.+?)\@\>/gim
};
\模板设置={
插入:/\/gim,
评估:/\/gim,
转义:/\/gim
};

然后,您可以使用
而不是
编写限定下划线变量if和for语句,并且不会与jsp冲突@coderman的示例很有帮助,但是,不幸的是,如果您想在模板中使用换行符,它就不起作用了。例如:

   <@ 
      var numPages = 10;
      if ( numPages > 1 ) {
   @>
   <div><@=numPages@></div>
   <@}@>

注意
[\s\s]
在evaluate regexp中。这是关键。

这个问题可以通过转义
来解决。另一个不需要全局替换的选项是指定插值和求值到特定方法调用

 _.template($("#template-id").html(),null, {
   interpolate :  /\{\{\=(.+?)\}\}/g,
   evaluate: /\{\{(.+?)\}\}/g
 });`

哦,天哪,我想我最好是RTFM!现在我不觉得自己很愚蠢吗谢谢你的快速回复。。。问题解决了。答案是肯定的,但这是为那些(像我一样)希望有一个复制粘贴解决方案的程序员准备的:)我已经添加了那个块,并将我所有的标记都更改为,但它似乎不起作用。有人能解释一下我做错了什么吗?@coderman感谢你在喧闹中理解了普通程序员的真正需求谢谢你!我一直面临着同样的问题
<script id="tmpl" type="text/x-template">
    <span>Hello, <\%=name%></span>
</script>
 _.template($("#template-id").html(),null, {
   interpolate :  /\{\{\=(.+?)\}\}/g,
   evaluate: /\{\{(.+?)\}\}/g
 });`