从速度视图页面内调用类方法(静态)

时间:2010-02-24 20:21:01

标签: java velocity

您可以在视图页面内调用类方法吗?

特别是未传递到视图中的那些?

在asp.net MVC中,我可以这样做:

<%= SomeClass.FixDateFormat(ViewData.Model.SomeClass.DateCreated) %>

2 个答案:

答案 0 :(得分:19)

由于这个问题出现在谷歌搜索的这个主题的顶部,似乎人们可能希望看到更新的答案,当他们在他们的搜索的顶部... ...

(在此处找到:http://velocity.10973.n7.nabble.com/Use-of-static-functions-td15126.html

在Velocity 1.5或更早版本中,你可以使用:

#set( $String = '' )
#set( $foo = $String.format('%.1f', $dataFedIn) )

因为你总是可以在实例上调用静态方法。 :)

但是,因为有一些静态类,你不能 创建实例(例如java.util.Math),我们在1.6中添加了支持 静态类方法没有实例:

爪哇:

context.put("String", String.class);

速度

#set( $foo = $String.format('%.1f', $dataFedIn) ) 

答案 1 :(得分:8)

这是一种调用任何类的静态方法而不需要初步上下文操作的通用方法:

#set($String='')##
#set($Base64=$String.class.forName('java‌​.util.Base64'))##
#‌​set($str='test')##
​$Base64.getEncoder()‌​.encodeToString($str‌​.getBytes('utf8'))