Вызов методов класса (статический) изнутри страницы просмотра скорости

Можно ли вызвать методы класса изнутри страницы просмотра?

В частности, те, которые не передаются в представление?

В asp.net MVC я могу сделать это:

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

Ответы

Ответ 1

Поскольку это появилось в верхней части моего поиска в Google по этой теме, похоже, что люди могут увидеть обновленный ответ, когда они получат это в верхней части своего поиска...

(найдено здесь: 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 для статические методы класса sans экземпляры:

Java:

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

Скорость:

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

Ответ 2

Вот универсальный способ вызова любого статического метода любого класса без необходимости предварительного манипулирования контекстом:

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