2017-10-30 11 views
0

내 속도 버전은 내 VM 파일에서 작동하지 않는 변수의 곱셈은Mulitiplication 작업이 속도 템플릿에 작동하지

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 값이 표시 가져 오지입니다 1.7입니다 .

내가 제대로하지만 11 * 1.0 다음의 계산처럼 내가 $ totalWeight = $ pQty *이 날 도움이 될 것입니다 경우 $ prodWeight가

그것은 분명한 것를 사용할 때 계산할 수 하드 코드 값을 넣어합니다.

감사합니다.

+1

사용자 (mathTool) [https://velocity.apache.org/tools/1.3/generic/MathTool.html] – soorapadman

답변

1

참조 중 하나 또는 둘 모두가 숫자가 아닌 문자열이어야합니다. $pQty.class.name$prodWeight.class.name을 표시하여 확인할 수 있습니다.

속도 1.7은 문자열에서 숫자로의 암시 적 변환을 수행하지 않습니다.

얻을에 오른쪽, 다음 중 하나를 수행 할 수 있습니다 :

  • 업그레이드 등의 암시 적 변환을 처리 속도 2.0에
  • 하게 $ pQty 및 $ prodWeight 숫자가 호출 코드
  • 에 있는지 확인 추가 MathTool (또는 같은 일을하고 자신의 일반 자바 객체) 벨로 시티 컨텍스트에 :

    #set($pQty = $math.toNumber($pQty)) 
    #set($prodWeight = $math.toNumber($prodWeight)) 
    
+0

my $ pQty.class.name은 java.lang.Long 및 $ prodWeight.class.name입니다. – sush

+0

yes ......이 #if ($ {entry.product.weight})를 사용하여 해결됨 \t \t #set ($ Double = 0.0) \t \t #set $ prodWeight = $ 사용해 Double.parseDouble ($ {entry.product.weight})) \t의 #end \t #set가 ($ totalWeight = $ {entry.quantity} * $ prodWeight) 도움을 \t ' – sush

+0

감사합니다! – sush