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