0

Apache チュートリアルに従いましたが、次のコードでエラーが発生します。

エラー>>>>

Caused by: org.xml.sax.SAXParseException; systemId:     
file:/C:/Users/target/Project-1.0/WEB-
INF/classes/struts.xml; lineNumber: 53; columnNumber: 15; The content of element type "package"   
must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-  
class-ref?,global-results?,global-exception-mappings?,action*)".

アクションとパッケージが正しく定義されていることに注意してください。リダイレクト コードをコピーすると、エラーが発生します。コード

     <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="UnderConstruction"></default-action-ref>

            <action name="UnderConstruction">
                <result>notFound.jsp</result>
            </action>

            <result-types>
                <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
            </result-types>

            <action ....>
            </action>
              ,,,
    </package>

次の行を変更すると

 <result>notFound.jsp</result> 

 <result type="tiles">notFound.jsp</result>  

アプリケーションは実行されますが、間違ったアドレスを入力すると notFound.jsp ページが表示されず、見つからないアクションの例外がスローされます。

次のコードを試すと、アプリケーションは実行されますが、間違ったリクエストを建設中のページにリダイレクトしません

    <package name="default" namespace="/" extends="struts-default">

            <result-types>
                <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
            </result-types>

            <action ....>
            </action>
              ,,,
    </package>

      <package name="Hello" extends="struts-default">
           <default-action-ref name="UnderConstruction"></default-action-ref>

            <action name="UnderConstruction">
                <result>notFound.jsp</result>
            </action>
       </package>
4

1 に答える 1

3

あなたが示した上記の構成は、タイル統合用です。単純にコピーして貼り付けて、ロケットのように機能させることはできません。ただし、目標を達成するにはさまざまな方法があります。アプローチの一部は次のとおりです。

最初のアプローチ

エラーまたは例外のグローバル結果宣言を作成する

<global-results>
    <result name="error">/Error.jsp</result>
    <result name="specific_exception">/Unique.jsp</result>
    <result name="login" type="redirectAction">Login.jsp</result>
</global-results>

そして、アクションベースの侵略からのエラーまたは成功のそれぞれの文字列を検証して返します。

2 番目のアプローチ

アクションマッピングで自分自身をリダイレクトできます

<action name="your_action_name">
     <result type="success">Success.jsp</result>
     <result type="error">notFound.jsp</result>
 </action>
于 2013-03-13T06:26:28.530 に答える