我正尝试在一个极其简单的hello world Struts项目上测试Jtidy过滤器。
我在跟踪other answers that were given here in the past。
在部署或访问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>我在这里可能做错了什么?如果我没有得到任何异常,我怎么知道呢?
发布于 2013-04-16 05:53:49
首先,我必须更改过滤器的执行顺序,以便最后调用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存储库:
从命令行:http://jtidy.sourceforge.net/nightly/
C:\TEMP
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
https://stackoverflow.com/questions/15951749
复制相似问题