5

我试图在一些速度模板中访问 HttpServletRequest 但从未成功。我已经尝试过以下语法风格

当前 URL:$req.get("attributes").get("CURRENT_URL")) 结果 > 当前 URL:$req.get("attributes").get("CURRENT_URL"))

当前 URL:$request.get("attributes").get("CURRENT_URL")) 结果 > 当前 URL:$request.get("attributes").get("CURRENT_URL"))

当前 URL:$request.get("attributes").get("CURRENT_URL")) 结果 > 当前 URL:$request.get("attributes").get("CURRENT_URL"))

当前 URL:${request.get("attributes").get("CURRENT_URL"))} 结果 > 当前 URL:${request.get("attributes").get("CURRENT_URL"))}

注意:Web.xml 看起来像

<!-- 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>
4

6 回答 6

5
$request.getParameter("parameterName")
于 2013-04-21T23:26:11.600 回答
3

对于 VelocityTools,正确的引用是 $request 和 $response,而不是 $req 和 $res

方法名称是 getAttribute,而不是 get。所以你可以这样做:

$request.getAttribute('foo')

或者只是 $request.foo

但不是 $request.get('foo')

于 2012-08-23T14:09:45.973 回答
2

默认情况下,您将无法访问HttpServletRequestVelocity 模板中的 您只能访问已Context为您放置的对象。因此,在支持 Java 类中,将所需的信息添加到上下文中:

context.put("url", request.getAttribute("CURRENT_URL"));

然后在您的 Velocity 模板中,您可以简单地引用$url.

于 2012-08-23T13:10:07.987 回答
0

尝试这个

$request.getSession().getAttribute('userId')
于 2015-12-15T07:10:32.027 回答
0

获取具体参数:

$!request.getParameter('parameterName')

要获取整个查询字符串:

$!request.getQueryString()
于 2015-11-05T18:12:05.680 回答
0

您需要根据会话滚动自己的课程才能正确执行此操作。

我立即遇到了这个问题,现在要创建一个会话类,我将通过 values 属性作为 HashMap 列表访问该会话类。

然后你需要做的就是在使用前给velocity的上下文赋值一次。

context.put("session", MySessionClass.values));
于 2015-08-30T11:33:56.113 回答