2013-10-16 45 views
1

它将相关类打印为java.lang.Longjava.lang.String但它不转换。 请帮忙解决这个问题。将Integer转换为Long in Velocity

有没有其他简单的方法来做到这一点?

集的Java文件

resolver.setAttirbutes("Long",Long.class); 
resolver.setAttirbutes("String",String.class); 

转换成虚拟机文件

$Long.parseLong($String.valueOf(2)) 

回答

4

这方法也不怎么静态工作。 Java中是否存在Long.class.parseLong?不。您没有对Long进行静态引用,而是将类对象用于处理反射和类加载。出于安全原因,Velocity甚至不允许您调用除getName以外的其他Class对象的任何方法。您想要传递给Long本身,而不是Long.class,但不幸的是,这是不可能的。

但是由于也可以在该类的任何实例上调用静态方法,所以您只需要在上下文中放置一个对象,如Long.MAX_VALUELong.valueOf(0)

甚至没有,由于速度只能存储对象,而不是原始值,任何long实际上是一个Long,任何int实际上是一个Integer,所以你可以这样做:

#set ($two = 2) 
$two.class -> java.lang.Integer 

#set ($twoLong = $two.longValue()) 
$twoLong.class -> java.lang.Long 

#set ($threeLong = $twoLong.valueOf('3')) 
+0

这对我非常有帮助 – sunleo