How to access Session or Request object in Velocity Template
Solution 1
$request.getParameter("parameterName")
Solution 2
For VelocityTools, the proper references are $request and $response, not $req and $res
The methods name is getAttribute, not get. So you can do:
$request.getAttribute('foo')
or just $request.foo
but not $request.get('foo')
Solution 3
You won't have access to the HttpServletRequest
by default in your Velocity template; you'll only have access to objects that have been placed in to the Context
for you. So in the backing Java class, add the info you want into the conext:
context.put("url", request.getAttribute("CURRENT_URL"));
Then in your Velocity template, you can simply reference $url
.
Ifi
Updated on June 14, 2022Comments
-
Ifi about 2 years
I am trying to access HttpServletRequest in some velocity template but never succeed. I have already tried following flavor of syntax
Current URL: $req.get("attributes").get("CURRENT_URL")) Result > Current URL: $req.get("attributes").get("CURRENT_URL"))
Current URL: $request.get("attributes").get("CURRENT_URL")) Result > Current URL: $request.get("attributes").get("CURRENT_URL"))
Current URL: $request.get("attributes").get("CURRENT_URL")) Result > Current URL: $request.get("attributes").get("CURRENT_URL"))
Current URL: ${request.get("attributes").get("CURRENT_URL"))} Result > Current URL: ${request.get("attributes").get("CURRENT_URL"))}
Note : Web.xml looks like
<!-- Processes application requests --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <!-- Define Velocity template compiler --> <servlet> <servlet-name>velocity</servlet-name> <servlet-class> org.apache.velocity.tools.view.servlet.VelocityViewServlet </servlet-class> <!-- Unless you plan to put your toolbox.xml and velocity.properties under different folders or give them different names, then these two init-params are unnecessary as of VelocityTools 1.3. The VelocityViewServlet will automatically look for these files in the following locations. --> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> </servlet> <!-- Map *.vm files to Velocity --> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping>