我的速度版本是1.7变量的乘法在我的vm文件中不起作用
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时无法计算
如果您能帮助我,那将是不胜感激的。
谢谢,
最佳答案
您的一个或两个引用必须是字符串而不是数字。您可以通过显示$pQty.class.name
和$prodWeight.class.name
进行检查。
Velocity 1.7不会进行任何从字符串到数字的隐式转换。
为正确起见,您可以:
升级到处理此类隐式转换的Velocity 2.0
确保$ pQty和$ prodWeight是调用代码中的数字
将MathTool(或您自己执行相同操作的任何普通Java对象)添加到Velocity上下文中:
#set($pQty = $math.toNumber($pQty))
#set($prodWeight = $math.toNumber($prodWeight))