URL localhost:8443 / context / anyname.anyextensionを入力すると、ステータス404(見つかりません)が表示されますが、localhost:8443 / context / anynameWithouthExtensionsのようなものを試すと、Struts2がアクションにマップしようとしたようです。エラー500(内部サーバーエラー)を取得します。両方のアプローチで常にステータス404を取得する必要はありませんか?
2 に答える
これは、Struts2がURLをアクションにマップしようとした結果だと思います。「.anyextension」を指定すると、拡張子(Struts 2で使用されるデフォルトの拡張子)として「.action」を追加しない限り、有効なStruts2アクションではないことがわかります。その他、Struts2の呼び出しではないことを認識しています。同様に、拡張機能の欠如はStruts 2のデフォルトであり、アクションを検索しようとしますが、有効なアクションがないため失敗します。
これをstruts.xmlに追加することで、カスタム拡張機能を追加できます。
<constant name="struts.action.extension" value=",action,do" />
さらに、Strutsにエラーハンドラーを追加して、有効なアクションの場合に404コードを返すこともできますが、それは別の質問に該当します。
ありがとう、アンディ
おそらく、を使用しました 。これは、その名前空間<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はおそらくルートにのみバインドされているためです。
そしてもちろん、デフォルトのアクションはエラーになります...