2013-04-11 62 views
0

我試圖在一個荒謬簡單的hello世界Struts項目上測試Jtidy過濾器。我正在關注other answers that were given here in the pastJtidy過濾器似乎不叫

在部署或訪問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

'拋出java.lang.ClassNotFoundException:org.w3c.tidy.servlet.filter.JTidyFilter',所以它不是爲我工作... – 2013-06-11 07:04:25

回答

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> 

其次,我不得不在classpath不僅jtidyservlet罐子,還jtidy罐子(沒有後者,編譯都很好,但我會得到在運行時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罐子到我的本地Maven回購:http://jtidy.sourceforge.net/nightly/

:從

  1. 下載jtidyservlet-r8-SNAPSHOT.jar

  2. 將它放入在命令行

  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