Я перефразирую свой существующий вопрос в более общий. Я хочу знать, есть ли у Velocity неявные ссылки на объекты, как у JSP.
Мне особенно интересно знать об объекте запроса.
В JSP мы можем получить атрибут в области запроса, например <%= request.getAttribute("req1") %>
Я знаю, что JSP - это сервлет, и <%= request.getAttribute("req1") %>
заканчивается как часть метода _jspService (), который имеет объект запроса, доступный до завершения области запроса.
Я не уверен, как Velocity работает за кулисами (возможно, он оставляет объект запроса к тому моменту, когда он играет его роль)
Чтобы проверить, что я сделал следующее, что было частью моего предыдущего вопроса.
У меня есть Spring MVC TestController, в котором я устанавливаю атрибут запроса. Я использую шаблоны Velocity для рендеринга представлений.
@RequestMapping(value="/test", method=RequestMethod.GET)
public ModelAndView display(HttpServletRequest req, HttpServletResponse resp){
...
req.setAttribute("req1", "This should be present for first request");
...
}
В шаблоне Velocity я делаю что-то вроде
Request: $request.getAttribute('req1')
но я не получаю значение req1. Я знаю, что я должен был поставить req1 в карте модели вместо запроса, но я хочу знать о неявном объекте запроса ref.
Я тоже пытался $req1
, но он не работает.
Когда я делаю то же самое с моделью и возвращаю ее обратно, все работает правильно.
Куда я иду не так?
Обновление: То же самое происходит и с req.getSession().setAttribute("req1", testObject)
.