日期:2014-05-16  浏览次数:20417 次

velocity 宏,javascript函数及相互调用

一,Velocity 中的宏我们可以理解为函数。
①宏的定义
#macro(宏的名称$参数1 $参数2 …)
语句体(即函数体)
#end
②宏的调用
#宏的名称($参数1 $参数2 …)
说明:参数之间用空格隔开。

如:

#set($pageNum = 15)

#macro(velocityMacro $para1 $para2 )

     $pageNum= $para1+$para2

#end

二,javascript函数:

例如

<script type="text/javascript">
function getToPage(param)
{
    alert(param)
}
</script>

写在<head></head>之间。

调用,如<a href="getToPage(2)">test</a>

 

三,混合调用:

    <a href="javascript:getToPage($!{category.id})">test</a>

注意:velocity的宏与javascript的函数是有区别的:

<a href="$pageNum" onmouseover="#velocityMacro($pageNum -1)">hello</a>

<a href="$pageNum" onmouseover="#velocityMacro($pageNum 1)">world</a>

运行发现,不论如何提示

hello上提示15, world 提示14

<a #velocityMacro($pageNum -1) href="$pageNum" >hello1</a>

则此时hello1显示14

 

以上现象说明#velocityMacro的执行顺序与它放的位置有关,且只要写了就会执行,即使没有触发事件(onmouseover等)。

 

 

一个小例子如下:

#if($!pager.currentPage<$!pager.totalPages)
   <a href="javascript:page($!{pager.currentPage}+1);">下页</a>
      <a href="javascript:page(${pager.totalPages});">尾页</a>
  #else
   下页
   尾页
  #end