3

Struts2、Hibernate で構築された Web アプリケーションがあり、正常に動作します。

NetBean で新しいエンタープライズ アプリケーションを作成します。私が構築した Web アプリケーションは、エンタープライズ アプリケーションに Java EE モジュールとして追加されました。クライアント モジュールを Web アプリケーションとして選択し、エンタープライズ アプリケーションを実行しようとしました。

ただし、Web アプリケーションは機能しませんでした。それは私に言った

org.apache.jasper.JasperException: The Struts dispatcher cannot be found.  

This is usually caused by using Struts tags without the associated filter. 

Struts tags are only usable when the request has passed through its servlet filter, 

which initializes the Struts dispatcher needed for this tag. - [unknown location]

Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

エンタープライズ アプリケーションから Web アプリケーションを削除し、クリーンアップしてビルドします。Web アプリケーションは実行可能です。

補足:

次の図のように、エンタープライズ アプリケーションにライブラリを追加し、変更しましたfilter。しかし、エラーは引き続き発生します。 ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

0

Web アプリケーションをエンタープライズ アプリケーションとして JavaEE モジュールとして追加したときに、ビルドパス/クラスパスが正しく構成されているかどうかを確認します。いくつかの依存関係が解決されていない可能性があるため、Struts ディスパッチャーを見つけることができませんでした。

注: FilterDispatcher フィルターは、Struts バージョン 2.1.3 以降では非推奨です。Struts2 の最新バージョン (> 2.1.3) を使用している場合は、

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

代わりは。そして、JasperException を取得しているので。この例外が発生する理由:

  • タグを見逃したり、タグを適切に閉じなかったりするたびに発生します
  • JSP が jasper エンジンによって解析されていない場合、jasper Exception がスローされます。jspコードを正しく記述していない場合、および使用できないリソースをjspに配置すると、Jasper Exceptionが発生することを意味します
  • 次の理由により、ジャスパー例外を取得する必要がある場合があります。

    1.jsp-api.jar がビルド パスにありません。

    1. Jsp コードが正しく記述されていません。
于 2012-12-20T07:23:11.043 に答える
0

@DarkHorse が述べたように、 を使用しないFilterDispatcherでください。 に変更してくださいorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

すべての依存関係が含まれているわけではないようです。クラスパスに次の依存関係があることを確認してください。
ここに画像の説明を入力

于 2012-12-20T15:19:15.020 に答える