我有一个Velocity模板文件,该文件具有来自[[XML的数据。我想将字符串转换为整数类型。
我该怎么做?#set($intString = "9")
#set($Integer = 0)
$Integer.parseInt($intString)
这样做使用Java底层速度。 $ Integer变量不过是一个Java Integer对象,您可以使用该对象访问.parseIntEdit:上面的代码仅供演示。当然,有一些方法可以对其进行优化。
Context velocityContext = new Context();
velocityContext.put(Integer.class.getSimpleName(), Integer.class);
[这允许您使用java.lang.Integer
调用模板中$Integer.parseInt($value)
的静态方法,并且不依赖在模板中执行类型转换之前已调用的#set。
parseInt
的问题是,如果字符串不可解析,它将引发异常。如果您将NumberTool加载到上下文中,那么以下是比parseInt
更好的解决方案:#set($intString = "009")
#set($Integer=$numberTool.toNumber($intString).intValue())
#if($Integer)
## ok
#else
## nok
#end
有时NumberTool也被加载为$number
。但是,一个缺点是NumberTool只是解析它找到的第一个数字,而忽略其余的,所以“ 123a” => 123。
#set($stringToCast = "0")
$number.toNumber($stringToCast)
$number
是NumberTool的默认键名,但是可以通过在配置中指定其他名称(例如$numberTool
)来覆盖它。您必须检查在Velocity环境中使用的NumberTool的名称。toNumber method返回:
该对象为Number;如果无法进行转换,则为null如果要显式显示
int
变量而不是Number
对象,则可以在结果上使用intValue
method。因此,上面的代码将如下所示:
intValue