Function ApacheVelocity:如何定义Java中的自定义方法?

Function ApacheVelocity:如何定义Java中的自定义方法?,function,methods,velocity,Function,Methods,Velocity,我目前在Polarion应用程序ALM软件中编写了一个wiki页面,这些页面上的语法包括(据我所知)HTML、Javascript和Apache Velocity 所以我想用ApacheVelocity编写一个脚本,因为我认为这是访问Polarion工作项的最佳方式,因为有预定义的方法 现在我想写一个方法,它遍历一组工作项并在列表或数组中收集它们的ID 所以我只想定义一个新方法,比如Java(),但我在web上找不到Velocity是如何实现的(我还搜索了“Apache-Velocity函数”,

我目前在Polarion应用程序ALM软件中编写了一个wiki页面,这些页面上的语法包括(据我所知)HTML、Javascript和Apache Velocity

所以我想用ApacheVelocity编写一个脚本,因为我认为这是访问Polarion工作项的最佳方式,因为有预定义的方法

现在我想写一个方法,它遍历一组工作项并在列表或数组中收集它们的ID

所以我只想定义一个新方法,比如Java(),但我在web上找不到Velocity是如何实现的(我还搜索了“Apache-Velocity函数”,也没有结果)


如果我想编写自己的方法/函数,这是可能的还是必须使用Javascript

要做到这一点,请使用希望在velocity模板中使用的方法创建一个静态类。在velocity上下文对象中设置此类

velocityContext.put("anyKey",YourStaticClass.class)

该类将在velocity模板中提供。然后,您可以访问它的方法,如:
anyKey.Method()

也许您正在查找宏?

上面链接中的代码段:

下面是一个Velocimacro,它有两个参数,一个颜色和一个对象列表:

#macro( tablerows $color $values )
  #foreach( $value in $values )
    <tr><td bgcolor=$color>$value</td></tr>
  #end
#end

#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )
#set( $color = "blue" )

<table>
  #tablerows( $color $greatlakes )
</table>
#宏(表行$color$值)
#foreach($value中的值)
美元价值
#结束
#结束
#套装($Greatrakes=[“高级”、“密歇根”、“休伦”、“伊利”、“安大略”])
#设置($color=“blue”)
#tablerows($color$greatlakes)
tablerows宏正好接受两个参数。第一个参数取代$color,第二个参数取代$values。任何可以放入VTL模板的东西都可以放入Velocimacro的主体中

请注意,$greatlakes取代了$values。呈现此模板时,将生成以下输出:

<table>
<tr><td bgcolor="blue">Superior</td></tr>
<tr><td bgcolor="blue">Michigan</td></tr>
<tr><td bgcolor="blue">Huron</td></tr>
<tr><td bgcolor="blue">Erie</td></tr>
<tr><td bgcolor="blue">Ontario</td></tr>
</table>

优越的
密歇根
休伦
伊利
安大略