0

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

我正在关注过去在这里给出的其他答案

在部署或访问 JSP 期间我没有收到任何错误。但似乎过滤器什么也没做。即没有从创建的 html 中删除 html 注释。

Struts 过滤器似乎工作正常.. 因为我的 Action 类被调用了。

这是我的 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>

我在这里可能做错了什么?如果我没有得到任何异常,我怎样才能知道?

4

1 回答 1

0

首先,我必须更改过滤器的执行顺序,以便最后调用 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>

其次,我必须在类路径上不仅有jtidyservletjar,还有jtidyjar(没有后者,编译正常,但我会java.lang.ClassNotFoundException: org.w3c.tidy.TidyMessageListener在运行时得到一个)。

在我的 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 存储库中:

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

  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

于 2013-04-15T21:53:49.063 回答