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

2022-09-01 18:50:53

是否可以从视图页内部调用类方法?

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

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

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

答案 1

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

(在这里找到这个: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) ) 

答案 2

以下是调用任何类的任何静态方法的通用方法,而无需进行初步的上下文操作:

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

推荐