Jtidy过滤器似乎没有被调用



我正在尝试在一个非常简单的hello world Struts项目上测试Jtidy过滤器。

我遵循过去这里给出的其他答案。

我在部署或访问jsp期间没有得到任何错误。但似乎过滤器什么也没做。也就是说,不会从创建的HTML中删除HTML注释。

Struts过滤器似乎工作得很好。因为我的Action类被调用了

my web.xml:

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>Struts 2 Web Application</display-name>
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
    <filter>
        <filter-name>JTidyFilter</filter-name>
        <filter-class>org.w3c.tidy.servlet.filter.JTidyFilter</filter-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>indent: auto; indent-spaces: 2; hide-comments: true</param-value>
        </init-param>
    </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
    <filter-mapping>
        <filter-name>JTidyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

我在这里可能做错了什么?如果没有任何例外,我怎么知道呢?

首先,我必须更改过滤器的执行顺序,以便最后调用Jtidy过滤器(在Struts过滤器完成其工作之后):

新web.xml:

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>Struts 2 Web Application</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class>
    </filter>
    <filter>
        <filter-name>JTidyFilter</filter-name>
        <filter-class>org.w3c.tidy.servlet.filter.JTidyFilter</filter-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>indent: auto; indent-spaces: 2; hide-comments: true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>JTidyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

第二,我必须在类路径上不仅有jtidyservlet jar,还有jtidy jar(没有后者,编译正常,但在运行时我将得到一个java.lang.ClassNotFoundException: org.w3c.tidy.TidyMessageListener)。

in my pom.xml:

<dependency>
    <groupId>jtidy</groupId>
    <artifactId>jtidyservlet</artifactId>
    <version>r8-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>jtidy</artifactId>
    <version>r8-21122004</version>
</dependency>

我还必须手动将jtidyservlet jar添加到我的本地maven repo:

  1. 从http://jtidy.sourceforge.net/nightly/下载jtidyservlet-r8-SNAPSHOT.jar

  2. 把它放到C:TEMP

  3. 从命令行运行:

SET LOCAL_JARS=C:TEMP

mvn install:install-file -DgroupId=jtidy -DartifactId=jtidyservlet -Dversion=r8-SNAPSHOT -Dpackaging=jar -Dfile=%LOCAL_JARS%jtidyservlet-r8-SNAPSHOT.jar -DgeneratePom=true

相关内容

  • 没有找到相关文章

最新更新