Вопросительный знак (?) в шаблонах FreeMarker используется для обозначения встроенных методов, которые добавляются к объектам самим шаблоном. 13
Это делается, чтобы избежать конфликтов имён с реальными методами и другими подпеременными. 1
Пример: если нужно убедиться, что путь начинается с символа «/», то можно написать «path?ensurestartswith('/')». 1 Объект Java, за которым стоит путь (строка), не имеет такого метода, но FreeMarker добавляет его. 1
Если метод не имеет параметров, то для краткости можно опустить круглые скобки (). 1 Например, чтобы получить длину пути, нужно написать «path?length», а не «path?length()». 1