我的速度版本是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))

10-07 13:59