Корень проблемы в том, что FreeMarker не работает напрямую со значениями / объектами Java.Язык шаблонов имеет свою собственную простую систему типов, и материал, поступающий извне, сопоставляется с этим с помощью метода, называемого объектным переносом.(Значения, которые не приходят извне, даже не содержат внутри обернутого объекта.) То, что вы все еще смогли получить класс некоторого объекта, является чисто случайным ... Что происходит, когда механизм обертывания объектов решает, чтоОбъект должен быть сопоставлен с типом FreeMarker "hash", а элементы hash будут соответствовать свойствам JavaBean объектов.У объекта есть метод getClass()
, который (ошибочно) рассматривается как получатель свойства "class".
Так что нет универсального способа получить класс ... среди других, потому что иногда нет классаполучить.Вы можете написать TemplateMethodModelEx
, который приложит достаточно усилий для этого.