此处$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"))")
答案 0 :(得分:4)
这很有效 内部的val模板需要注释的内容
#set($val =1)
//Integer val = new Integer();
#set($start = 0)
#set($end = $val.parseInt($SplitMap.get("$pod.id")))
答案 1 :(得分:0)
parseInt
的问题在于,如果字符串不可解析,它会抛出异常。
如果您在上下文中加载NumberTool,则parseInt
的解决方案比#set($val = 1)
#set($start = 0)
#set($end = $numberTool.toNumber($SplitMap.get("$pod.id")).intValue())
更好:
$number
有时,NumberTool也会加载为handle_timeout()
。
然而,一个小缺点是,NumberTool只是解析它找到的第一个数字并忽略其余数字,所以“123a”=> 123。
答案 2 :(得分:0)
您必须将字符串$SplitMap.get("$pod.id")
转换为Number
或int
:
#set( $start = 0 )
#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")) )
#set( $end = $spodId )
$number
是NumberTool的默认键名,但是可以通过在配置中指定其他名称(例如$numberTool
)来覆盖它。您必须检查在Velocity环境中使用的 NumberTool 名称。
该对象为Number;如果无法进行转换,则为null
如果要显式声明int
变量而不是Number
对象,则可以在结果上使用intValue
method。因此,以上代码的第二行将如下所示:
#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")).intValue() )