【问题标题】:Jtidy filter seems not to be calledJtidy过滤器似乎没有被调用
【发布时间】:2013-04-11 14:42:50
【问题描述】:

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

我正在关注other answers that were given here in the past

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

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>

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

【问题讨论】:

  • java.lang.ClassNotFoundException: org.w3c.tidy.servlet.filter.JTidyFilter,所以它对我不起作用......

标签: java servlets jboss7.x servlet-filters jtidy


【解决方案1】:

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

在我的 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. jtidyservlet-r8-SNAPSHOT.jar下载:http://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

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2021-07-13
    • 2010-12-29
    相关资源
    最近更新 更多