我的速度版本是1.7我的虚拟文件中不起作用的变量的乘法
foreach( $entry in ${ctx.order.entries} )
#if(${entry.quantity})
#set ($pQty = ${entry.quantity})
#end
#if(${entry.product.weight})
#set ($prodWeight = ${entry.product.weight})
#end
#if(${pQty} && ${prodWeight})
#set ($totalWeight = $pQty * $prodWeight)
#else
#set ($totalWeight = 0)
#end
<tr class="border_bottom table_data">
<td>${pQty }</td>
<td>${prodWeight}</td>
<td>${totalWeight}</td>
输出为11 1.0 $ {totalWeight}
未显示totalWeight值。
如果我把硬编码值设置为11 * 1.0那么它的计算正确但无法计算我何时使用$ totalWeight = $ pQty * $ prodWeight
如果你能帮我解决这个问题,那将是件好事。
谢谢,
答案 0 :(得分:1)
您的一个或两个引用必须是字符串而不是数字。您可以通过显示$pQty.class.name
和$prodWeight.class.name
来查看。
Velocity 1.7不会从字符串到数字进行任何隐式转换。
为了做到这一点,您可以:
将MathTool(或您自己的任何普通Java对象做同样的事情)添加到Velocity上下文中:
#set($pQty = $math.toNumber($pQty))
#set($prodWeight = $math.toNumber($prodWeight))