0

URL localhost:8443 / context / anyname.anyextensionを入力すると、ステータス404(見つかりません)が表示されますが、localhost:8443 / context / anynameWithouthExtensionsのようなものを試すと、Struts2がアクションにマップしようとしたようです。エラー500(内部サーバーエラー)を取得します。両方のアプローチで常にステータス404を取得する必要はありませんか?

4

2 に答える 2

0

これは、Struts2がURLをアクションにマップしようとした結果だと思います。「.anyextension」を指定すると、拡張子(Struts 2で使用されるデフォルトの拡張子)として「.action」を追加しない限り、有効なStruts2アクションではないことがわかります。その他、Struts2の呼び出しではないことを認識しています。同様に、拡張機能の欠如はStruts 2のデフォルトであり、アクションを検索しようとしますが、有効なアクションがないため失敗します。

これをstruts.xmlに追加することで、カスタム拡張機能を追加できます。

<constant name="struts.action.extension" value=",action,do" />

さらに、Strutsにエラーハンドラーを追加して、有効なアクションの場合に404​​コードを返すこともできますが、それは別の質問に該当します。

ありがとう、アンディ

于 2012-11-20T16:15:54.973 に答える
0

おそらく、を使用しました 。これは、その名前空間<default-action-refに対するすべてのUN一致要求に使用されるデフォルトのアクションへの参照です。また、その名前空間には、拡張子のないURLのみを処理するように指定するルールがあります。

これを見てください:

ドキュメント:http ://struts.apache.org/2.1.6/docs/action-configuration.html

<package name="Hello" extends="action-default">

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

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

そして最終的にあなたの設定を投稿します。

この場合、私はあなたが404を持っていると思います

localhost:8443/context/SOME_INVENTED_PATH/anynameWithouthExtensions

デフォルトのアクションrefはおそらくルートにのみバインドされているためです。

そしてもちろん、デフォルトのアクションはエラーになります...

于 2012-11-20T17:38:12.913 に答える