2

私のStruts2アプリケーションでは、次のアクションがありますstruts.xml

<action name="submitRecruitmentProcess" method="submitRecruitmentProcess"
            class="com.erp.people.action.RecruitementProcessManagementAction">
            <result name="success">jsp/process/processlist.jsp</result>         
            <interceptor-ref name="jsonValidationWorkflowStack"></interceptor-ref>
            <result name="input" type="json">
                <param name="ignoreHierarchy">false</param>
                <param name="includeProperties">actionErrors\[\d+\], fieldErrors\..+$,
                    actionMessages\[\d+\]</param>
            </result>    
        </action>

json-defaultin ma struts.xml ファイルを拡張し、クラスパスで struts-json プラグインも使用しています。しかし、アプリケーションを実行すると、次のようなエラーが発生します

ref-name jsonValidationWorkflowStack によって参照されるインターセプター クラスが見つかりません

何がうまくいかないのか、どんな助けでも大歓迎です。

私はこのリンクをたどりました

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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>Struts2</display-name>
    <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>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>jsp/login/login.jsp</welcome-file>
    </welcome-file-list>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

    <context-param>
    <param-name>
      org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
    </param-name>
    <param-value>/WEB-INF/tiles.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
  </listener>

</web-app>
4

2 に答える 2

2

このエラーは、struts2 json プラグイン jar ファイルをクラスパス (つまりWEB-INF/lib) に配置していないことを示しています。を取得しstruts2-json-plugin-2.3.20.jarてクラスパスに配置し、問題を修正してください。struts2 Jars をダウンロードした場合、この Jar ファイルはダウンロードしたパッケージの一部として表示されます。

あなたが提供したリンクをチェックしている間、あなたが使用したい場合、私はいくつかの問題を観察しましStruts2-2.3.20た.

1) のDOCTYPE宣言struts.xmlが正しくありません。次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
   "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" extends="json-default">
        <action name="login" class="com.examples.action.LoginAction">
            <interceptor-ref name="jsonValidationWorkflowStack"></interceptor-ref>
            <result name="input" type="json">
                <param name="ignoreHierarchy">false</param>
                <param name="includeProperties">actionErrors\[\d+\], fieldErrors\..+$,
                    actionMessages\[\d+\]</param>
            </result>
        </action>
    </package>
</struts>

テスト用に異なるパッケージでログインクラスに名前を付けました。

また、DOCTYPEvalidation.xml ファイルの宣言が適切ではありません。次のようにする必要があります。

<?xml version="1.0" encoding="UTF-8"?>   

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

プラグインに来て、クラスパスに JSON プラグインがない場合、次のような実行時例外が発生します。

Caused by: Parent package is not defined: json-default

アプリケーションのこのアドインを修正してstruts2-json-plugin-2.3.20WEB-INF/libクラスパスになるようにします。

JSP ページは JQuery タグを使用しているためstruts2-jquery-plugin-2.5.3.jar、クラスパスに配置する必要があります。

バージョンでテストしStruts2-2.3.20、コードを修正して、問題が解決するかどうかを確認しました。

于 2015-04-06T09:45:01.900 に答える
0

タグのinterceptor-ref本文は空であってはならないため、使用法を簡素化する必要があります

<interceptor-ref name="jsonValidationWorkflowStack"/>

このインターセプター スタックは、json-defaultパッケージが拡張する必要があるパッケージで利用できます。つまり、

<package name="default" extends="json-default"> 

json プラグインは、実行時にクラスパスにある必要があります。

于 2015-04-05T12:28:48.743 に答える