我正在尝试在一个非常简单的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:
从http://jtidy.sourceforge.net/nightly/下载
jtidyservlet-r8-SNAPSHOT.jar
把它放到
C:TEMP
从命令行运行:
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