質問

UrlRewriteFilter をインストールした後、ルールと対応する速度テンプレートを設定します。そして、テストページに移動すると、速度スクリプトはコンパイルされずに生のコードとして表示されます。

ルールのコードの例:

<rule>
   <from>/test/([0-9]+)</from>
   <to>/downloads/test.vm?Id=$1</to>
</rule>

urlrewritefilterの例

<filter>
   <filter-name>UrlRewriteFilter</filter-name>
   <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>DEBUG</param-value>
    </init-param>
</filter>

ルールが正しく実行されたにもかかわらず、速度テンプレートがレンダリングされない理由は何ですか?他のすべてのvmページは(直接アクセスした場合)正しくレンダリングされ、書き換えはjspで完全に機能します。

役に立ちましたか?

解決

これは、test.vmが静的コンテンツのデフォルトサーブレットによって提供される場合に発生します。

速度のマッピングを何らかの方法で変更したと思われます。 Velocity Toolsを使用している場合、次のようなマッピングが必要です。

<servlet>
  <servlet-name>velocity</servlet-name>
  <servlet-class>
    org.apache.velocity.tools.view.VelocityViewServlet
  </servlet-class>
</servlet>

<!-- Map all *.vm files to Velocity -->
<servlet-mapping>
  <servlet-name>velocity</servlet-name>
  <url-pattern>*.vm</url-pattern>
</servlet-mapping>

別の可能性は、他のフィルターがUrlRewriteフィルターに干渉する可能性があることです。 web.xmlを投稿できると便利です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top