Вызов методов класса (статических) из страницы просмотра скорости
Можете ли вы вызывать методы класса изнутри страницы просмотра?
Конкретно те, которые не передаются в поле зрения?
В asp.net MVC я могу сделать это:
<%= SomeClass.FixDateFormat(ViewData.Model.SomeClass.DateCreated) %>
2 ответа
Так как это поднялось в верхней части моего поиска в 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 для статических методов класса без экземпляров:
Джава:
context.put("String", String.class);
Скорость:
#set( $foo = $String.format('%.1f', $dataFedIn) )
Вот универсальный способ вызова любого статического метода любого класса без необходимости предварительного манипулирования контекстом:
#set($String='')##
#set($Base64=$String.class.forName('java.util.Base64'))##
#set($str='test')##
$Base64.getEncoder().encodeToString($str.getBytes('utf8'))