首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jtidy筛选器似乎未被调用

Jtidy筛选器似乎未被调用
EN

Stack Overflow用户
提问于 2013-04-11 22:42:50
回答 1查看 633关注 0票数 0

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

我在跟踪other answers that were given here in the past

在部署或访问JSP期间,我没有收到任何错误。但是看起来过滤器什么也不做。即没有html注释从所创建的html中移除。

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

这是我的web.xml:

代码语言:javascript
复制
<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>

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-16 05:53:49

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

新的web.xml:

代码语言:javascript
复制
<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中的

代码语言:javascript
复制
<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存储库:

从命令行:http://jtidy.sourceforge.net/nightly/

  • Drop it in C:\TEMP

  • Run
  1. 下载jtidyservlet-r8-SNAPSHOT.jar

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15951749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档