【问题标题】:VTL Velocity Template Language - Problems with type castingVTL Velocity 模板语言 - 类型转换问题
【发布时间】:2022-12-06 02:37:31
【问题描述】:

我在下面编写了 VTL 来检查我从 PIM 系统获取的变量(属性)是否不为空。如果将它们设置为零。然后用数学方法将两个变量相加。

我遇到的问题是它们必须是字符串或被视为字符串。 ($FordR12 + $DodgeR12) 的结果是串联的数字。示例:58 + 58 = 5858 如何以数学方式将这些字符串作为数字相加?

#if(${R12 Sales Rev Ford VDSP}== "")
#set($FordR12 = 0)
#else
#set($FordR12 =  ${R12 Sales Rev Ford VDSP})
#end

#if(${R12 Sales Rev Dodge VDSP}== "")
#set($DodgeR12 = 0)
#else
#set($DodgeR12 =  ${R12 Sales Rev Dodge VDSP})
#end

#set($Total = ($FordR12 + $DodgeR12))
$Total

我在网上查找了对变量进行类型转换的方法,包括 VTL 在线文档。到目前为止都失败了:(

【问题讨论】:

    标签: casting velocity vtl


    【解决方案1】:

    看起来你的变量是字符串,这意味着 VTL 将连接它们而不是将它们相加。

    您可以访问 Integer.parseInt 并首先将它们转换为整数,如下所示:

    #set($Integer = 0)
    
    #if(${R12 Sales Rev Ford VDSP} == "")
    #set($FordR12 = 0)
    #else
    #set($FordR12 = $Integer.parseInt(${R12 Sales Rev Ford VDSP}))
    #end
    
    #if(${R12 Sales Rev Dodge VDSP} == "")
    #set($DodgeR12 = 0)
    #else
    #set($DodgeR12 = $Integer.parseInt(${R12 Sales Rev Dodge VDSP}))
    #end
    
    #set($Total = ($FordR12 + $DodgeR12))
    $Total
    

    虽然看起来您在这里没有使用 AWS 服务,但这里有一个映射工具链接,它仍然有助于尝试这些东西:https://mappingtool.dev/app/apigateway/b08ed9b630114561134d7a41315d817c

    请注意,我已经更改了您的变量名称,因为它在标准 VTL 中无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 2017-08-05
      • 2022-09-27
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      相关资源
      最近更新 更多