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

3

VelocityTools の場合、適切な参照は $req と $res ではなく、$request と $response です。

メソッド名は 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 に答える