0

ばかげて単純な Hello World Struts プロジェクトで Jtidy フィルターをテストしようとしています。

過去にここで与えられた他の回答に従っています。

デプロイ中または JSP へのアクセス中にエラーは発生しません。しかし、フィルターは何もしないようです。つまり、作成された html から削除される html コメントはありません。

私のActionクラスが呼び出されているので、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.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>

ここで何が間違っているのでしょうか? 例外が発生しない場合、どうすれば確認できますか?

4

1 に答える 1

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だけでなく jar もクラスパスに配置する必要がありました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また、手動で jar をローカルの Maven リポジトリに追加する必要がありました。

  1. ダウンロードjtidyservlet-r8-SNAPSHOT.jar: http://jtidy.sourceforge.net/nightly/

  2. ドロップインC:\TEMP

  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

于 2013-04-15T21:53:49.063 に答える