0

所以在安装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 完美配合。

4

1 回答 1

1

当 test.vm 由静态内容的默认 servlet 提供服务时,就会发生这种情况。

我怀疑你以某种方式改变了速度的映射。如果您使用的是 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,将会很有帮助。

于 2009-09-10T03:19:55.833 回答