我正试图在一个荒谬简单的hello世界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>
我在这里做错了什么? 如果我没有任何例外,我该怎么知道呢?
答案 0 :(得分: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>
其次,我不得不在类路径上有jtidyservlet
jar,还有jtidy
jar(没有后者,编译很顺利,但我会得到一个java.lang.ClassNotFoundException: org.w3c.tidy.TidyMessageListener
运行时)。
:
<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:
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