它将相关类打印为java.lang.Long
orjava.lang.String
但它没有转换。请帮助解决这个问题。
有没有其他简单的方法可以做到这一点。?
在 Java 文件中设置
resolver.setAttirbutes("Long",Long.class);
resolver.setAttirbutes("String",String.class);
在VM文件中转换
$Long.parseLong($String.valueOf(2))
这不是静态方法的工作方式。Long.class.parseLong
Java中存在吗?不,您不是在放置对 的静态引用Long
,而是在放置处理反射和类加载的类对象。出于安全原因,Velocity 甚至不允许您调用Class
除getName
. 您想传递对Long
自身的引用, not Long.class
,但不幸的是,这是不可能的。
但是由于静态方法也可以在该类的任何实例上调用,所以您只需将Long
对象放入上下文中,例如Long.MAX_VALUE
or Long.valueOf(0)
。
甚至不是这样,因为 Velocity 只能存储对象,而不是原始值,所以 anylong
实际上是 a Long
,而 anyint
实际上是a Integer
,所以你可以这样做:
#set ($two = 2)
$two.class -> java.lang.Integer
#set ($twoLong = $two.longValue())
$twoLong.class -> java.lang.Long
#set ($threeLong = $twoLong.valueOf('3'))