Apache Velocity并添加JavaScript

时间:2015-12-14 14:44:25

标签: javascript apache velocity

请原谅我,因为我之前从未使用过Apache Velocity,但我必须弄清楚这一点!

我正在使用产品的adobe推荐模板,我现在正在添加星级评分系统,如下图所示:

star rating image

但是,你可以看到我添加的逻辑(在JS中)只是第一次执行。并且显然没有在循环中运行,因为它在Velocity中。

我向社区提出的问题是;我该怎样做才能做到这一点?

我已经尝试了一天现在无济于事,所以非常感谢任何帮助。

请参阅下面的代码! (谢谢!)

[#foreach循环是速度,脚本标签之间的所有内容都是我的附加代码]

<div class="line">
<h2>More for You</h2>

                   

#set($count=1)

      #foreach($e in $entities)  
        #if($e.id != "" && $count < $entities.size() && $count <=18) 
          <li>
          <script type="text/javascript">

              var myString = $e.rating;
                if (myString >= 5) { myString = 5;} 

              var myRegexp2 = /\d(?!.*\d)/;
              var match2 = myRegexp2.exec(myString);
              var starIMG = "<img src='http://kirklands.ugc.bazaarvoice.com/3768-en_us/" + match + "_" + match2 + "/5/rating.gif' alt='' />";

              var myRegexp3 = /\d/;
              var match = myRegexp3.exec(myString);

                function myFunction() {
        return(match);
            }

          </script>
            <a class="productBlock" onclick="var s = s_gi(s_account);
            s.linkTrackVars='events,eVar21';
            s.linkTrackEvents='event16';
            s.events='event16';
            s.eVar21='';
            s.tl(this,'o','Product Detail Cross-Sell');" href="$e.pageUrl?icid=hpFS ">
              <img title="$e.name" alt="$e.name" src="$e.thumbnailUrl">
              <h3>$e.name</h3>
              <div id="starRating"><script>document.getElementById("starRating").innerHTML = 
              starIMG;</script></div>
              <p>$$e.value</p>
            </a>

          </li>
        #set($count = $count + 1)
      #end 
    #end
  </ul>
</div>
<div class="scroolBtn btnRight"><span class="btn" id="scrool-forward"></span></div>
</div>
    jQuery(function(){       jQuery的( '#双击自动滚屏')。滚动框({         方向:'h',         switchItems:3,         距离:450,         将autoPlay:假       });       jQuery('#scrool-backward')。click(function(){         。jQuery的( '#双击自动滚屏')触发( '向后');       });       jQuery('#scrool-forward')。click(function(){         。jQuery的( '#双击自动滚屏')触发( '前进');       });     });     

1 个答案:

答案 0 :(得分:0)

我多年没有使用过Velocity模板脚本,但是疯狂猜测是一个逃避问题。您在速度模板中包含的所有内容实际上都是由Velocity引擎运行的,您必须转义$ variable literals。

http://velocity.apache.org/engine/devel/user-guide.html#escapingvalidvtlreferences

编辑不等,你的意思是你想在服务器端运行javascript代码,每个foreach项步骤应该评估javascript代码?