Тут говорится, что если шаблонизатор запускается с использованием freemarker.ext.servlet.FreemarkerServlet, то через весь запрос в шаблонизаторе проходят три объекта — Request, Session, Application. Помимо этого еще есть хэш RequestParameters, который содержит все параметры запроса.
Насколько я представляю, может и ошибаюсь, но в контексте Spring во Freemarker-шаблонах есть объект url. Тогда имя сервера можно получить так: ${url.server}
да, скорее всего они содержатся в Request. Потому что RequestParameters — это GET параметры запроса. А как вытащить из Request — непонятно. По идее, это объект HttpServletRequest, но Request.getContextPath() дает следующую ошибку: Request processing failed; nested exception is freemarker.core.InvalidReferenceException: Expression Request.getContextPath is undefined
Что же тут не так?
а не так тут то, что во freemarker не получается исполнять java-код, только дергать свойства. Поэтому и не получается брать contextPath и доставать адрес.
Или все-таки есть способ дергать методы классов напрямую из freemarker как и в jsp?
Вообще форумы пестрят кодом в стиле ${Request.getServerName()} или ${Request.setAttribute("test", "test")}, но у меня не получилось сделать подобное.
Второй вариант, который почему-то опять у кого-то работает — это писать ${Request.serverName}. Утверждается, что будет вызван метод getServerName(). Тоже не получилось.