0

私はstruts2アプリの開発を学んでいます.カスタム404ページの実装を手伝ってくれてありがとう. 私のアプリケーションでは、

web.xml には次のものがあります。

<error-page>
    <error-code>404</error-code>
    <location>/jsp/pub/error404.jsp</location>
</error-page>

struts.xml には次のものがあります。

    <package name="actions-default" extends="struts-default">

    <global-results>
        <result name="exception">/jsp/pub/exception.jsp</result>
    </global-results>

    <global-exception-mappings>
        <exception-mapping exception="java.lang.Exception"
            result="exception" />
        <exception-mapping exception="java.lang.RuntimeException"
            result="exception" />
    </global-exception-mappings>

</package>

また、struts.xml で devMode を false に設定

<constant name="struts.devMode" value="false" />

error404.jsp : jsfiddle で jsp ソースを表示するには、ここをクリックしてください

問題:

無効な URL またはマップされていないアクションでアプリケーションをヒットすると、カスタム 404 ページの代わりに次のメッセージが表示されます

"HTTP Status 404 - There is no Action mapped for namespace [/] and action name [invalidurl] associated with context path"

アプリケーション コンソールには、次のように表示されます。

SEVERE: Exception Processing ErrorPage[errorCode=404, location=/jsp/pub/error404.jsp] org.apache.jasper.JasperException: 6 行目で JSP ページ /jsp/pub/error404.jsp を処理中に例外が発生しました

6: <s:url value='/' var="contextPrefix" />

「s」タグをすべて削除し、error404.jsp をプレーンな jsp ページとして作成すると、カスタム 404 ページが表示されます。私はどこで間違っていますか?これを修正するための助けは非常に役立ちます。

前もって感謝します

S

4

1 に答える 1

0

ほとんどの S2 JSP タグは、S2 リクエストのコンテキストで実行されることを想定しています。JSP を直接参照すると、S2 リクエスト プロセスがバイパスされるため、valuestack がないため、ほとんどのタグが壊れます。

于 2012-10-15T16:03:23.710 に答える