1

$pod.id$SplitMap.get("$pod.id")为空。

这个循环也有效:

#set($start = 0)
#set($end = 1)

但这不起作用:

#set($start = 0)
#set($end = $Integer.parseInt($SplitMap.get("$pod.id")))

它给出了例外:

#set($start = 0)
#set($end = $Integer.parseInt("$SplitMap.get("$pod.id"))")
4

3 回答 3

5

这在内部工作,因为 val 模板需要一些被评论的东西

#set($val =1)
//Integer val = new Integer();
#set($start = 0)
#set($end = $val.parseInt($SplitMap.get("$pod.id")))
于 2013-02-20T06:58:24.647 回答
1

问题parseInt在于,如果字符串不可解析,它会引发异常。如果您将NumberTool加载到您的上下文中,则比parseInt以下解决方案更好:

#set($val = 1)
#set($start = 0)
#set($end = $numberTool.toNumber($SplitMap.get("$pod.id")).intValue())

有时 NumberTool 也加载为$number.

然而,一个小缺点是,NumberTool 只是解析它找到的第一个数字并忽略其余数字,因此“123a”=> 123。

于 2018-03-19T18:13:09.600 回答
0

您必须将字符串$SplitMap.get("$pod.id")转换为Numberor int

#set( $start = 0 )
#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")) )
#set( $end = $spodId )

$numberNumberTool的默认键名,但可以通过在配置中指定不同的名称(例如$numberTool)来覆盖它。您必须检查在 Velocity 环境中使用的NumberTool名称。

toNumber 方法返回:

如果无法进行转换,则对象为Number或 null

如果你想明确一个int变量,而不是一个Number对象,你可以在结果上使用intValue方法。所以上面代码的第二行看起来像这样:

#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")).intValue() )
于 2019-10-11T10:29:21.250 回答