Velocity将String转换为Integer

时间:2013-02-20 06:42:23

标签: java velocity

此处$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"))")

3 个答案:

答案 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")转换为Numberint

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

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

toNumber method返回:

  

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

如果要显式声明int变量而不是Number对象,则可以在结果上使用intValue method。因此,以上代码的第二行将如下所示:

#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")).intValue() )