Для служебных функций и макросов, связанных с View (а не с Model), стандартная практика заключается в том, чтобы внедрить их в FreeMarker и поместить в один или несколько шаблонов и #import (или #include). Также возможно вставить TemplateDirectiveModel
-s и TemplateMethodModelEx
-es (они похожи на макросы и функции, но они реализованы в Java) в шаблон, который вы # import / # inlcude обозначите как <#assign foo = 'com.example.Foo'?new()>
.
При вызове простых статических методов Java вы можете использовать ObjectWrapper
getStaticModels()
(при условии, что это подкласс BeansWrapper
), а затем получить необходимые методы как TemplateMethodModelEx
-es с staticModels.get("com.example.MyStatics")
. Теперь, когда они у вас есть, вы можете поместить их в модель данных (контекст Velocity) в Controller или выбрать методы из них в шаблоне # import-ed и т. Д. Конечно, вы также можете помещать объекты POJO в данные -модели, чтобы вы могли вызывать их нестатические методы.
Третий метод, который мало чем отличается от помещения вещей в модель данных, - это использование «общих переменных», которые являются переменными (возможно, включая TemplateMethodModelEx
-es и TemplateDirectiveModel
-s), определенными в Configuration
уровень.