[スイッチ]そこには異常が名前空間/とアクション名にマップされたアクションではありませんStruts2の

ページのアクション名に呼び出し、名前空間名(フォルダパス)の内側に配置する必要があります

     。<名前=「例」名前空間=「/例」のパッケージ変更=「Strutsのデフォルト」拡張>
         <アクション名=「HelloWorldの」クラス=「例.HelloWorld「>
             <結果> /example/HelloWorld.jsp </結果>
         </アクション>
HelloWorld.jspファイルを配置する必要があり、名前空間=」そうでない場合は、アクションを呼び出すことが間違っているだろう/例「exampleフォルダ。

名前空間について: 

Strutsの。パッケージ要素の下の名前空間属性の役割のXMLファイルは 
           
、言葉の前で言った: 
名前空間の役割は、適切なパッケージのURLアドレスアクションを制御することで、URLアドレスは、実際に我々のプログラム異なる機能でWebプログラミングでは、この基礎の基礎です。対応するトリガーにアクセスするためのURLアドレス、これはしっかりとビットJavaのクラスパスのように、把握しなければならない 


テキスト:http://www.blogjava.net/Unmi/archive/2008/05/26/203014.html 
Struts2ののStrutsの。 XMLのようなパッケージ構成パッケージを提供することができる名前空間属性は、分割された

<パッケージの名前空間=「/セキュア」  ...>
     ...... 
<用/ Package変更>を 

使用すると、名前空間の属性を指定しない場合、デフォルトの名前空間があります「」名前空間の計画を使用すると、アクセスルールを容易にすることができる、さまざまな目的に応じて適用されます。例えば、異なるインターセプタで構成された別の名前空間には、下のような制御権を達成することができるの下に「/安全な」ログインユーザ「公開/」公にアクセスの下で、アクセスすることができます。 

反応名前空間は、アクセスURLは、そのような名前空間=「/安全な」名前=の上に直接配置されている 「テスト」 アクション 

<パッケージの名前空間=「/セキュア」....> 
       <アクション名=「テスト」.... 
< /パッケージ> 

そのURLにアクセスするためには、ある  ポート/コンテキスト/セキュア/ test.action:// IP:HTTP名前空間には、テストのアクションがない場合は、次に何が起こる「/安全」ということ、?Strutsはそれがもとで「」テストを探している、デフォルトの名前空間をしようとします。 

別の例として、URLがある  のhttp:// IP:ポート/コンテキスト /いくつかの/パス/ test.action  とき、「/いくつかの/パス」名前空間の下にはテストアクションは、「」にされていない場合 

ラベル<S:URL値= "/安全な/ test.action" /> /context/secure/test.action対応するページファイルがある 

フォームアクション= "/:<sの少し馬は 、セキュア/ test.action" ....ソースファイルをされて、対応する<フォームアクション=「/コンテキスト/安全な/ test.action」...

:警告でなく、舞台裏の 

警告:指定されたアクションが見つかりません設定 :「/secure/test.action」 名前空間:アクション「属性のリテラル値「」。をデフォルトフォームアクション」 

Struts2のプロパティ値ときにアクションアクション名全体が、これは単に(パッケージの名前空間)+(アクション名に、このURLを使用には影響しません ) 撮影を閉じます。 

しかし、動的なメソッド呼び出し(struts.enable.DynamicMethodInvocation =真)は幸運ない使用。それは当然のそれを取るのは簡単です 

。<S:=フォームアクション「! /セキュア/テストupdate.actionを」.... 生成されたHTMLソースファイルはアクションです=「/ TestStruts2 / OM / テスト」

舞台裏警告メッセージがある一方で: 

「アクション」属性のリテラル値警告:指定されたアクションが見つかりません設定  。::「/安全な/テスト」「フォームアクションはをデフォルト」名前空間で

、このアクションのために=「/ TestStruts2 / OM /ことは明らかである場合には 、テストは」、 提出/コンテキスト/安全な- HTTPステータス404を取得する予定です /テスト・エラーを。 

正しい使用方法は、<S:アクションは...>はまた、名前空間属性を持って、はい、その 

:<フォームの名前空間=「/ sの安全な」アクション=「テストログイン!」> HTMLソースファイルを生成されます。<フォームアクション= 「/TestStruts2/om/test!login.action」....> 

私たちが望む何これです。 

あなたは、名前空間属性を設定しない場合、ディレクトリ階層のアクションにアクセスするとき、我々はまた、それを使うことができますか?はい、それは<アクション名は=「安全な/テストを設定し、struts1で慣例である ....」>名前スラッシュで、スラッシュが、中にアクション名にStruts2のに設定する必要が 

struts.enable。 

SlashesInActionNames =真のデフォルトはfalseですが、Struts2のは、おそらく名前空間の役割の後ろに、このアプローチに同意しません。 

使用文言のフォーム:上記は斜めアクション名、<Sをフレームを使用するために 

<S:フォームアクション= "安全な /テストは"> HTMLソースファイルを生成:<フォームアクション= "/コンテキスト/セキュア/ test.actionを" ..... 

<S:アクションフォーム= "!セキュア/テストの更新"> <フォームアクション= "!/:HTMLソースファイルの生成 コンテキスト/安全な/テストlogin.action" .....


アクションなし.actionを追加した後の上だけで<sのことを確実にするために、重要ではありません:form>のaction属性でなければなりませんがかのように書かれたあなたは、フロントスラッシュに追加片思い、との<action>は、struts.xmlに一致する名前です 

。<フォームアクション=「!S 、<S /安全な/テスト・アップデート」>:フォームアクション= "/安全な/テスト">や<s: "/フォームアクション= !安全な/テストupdate.action"> HTMLソースファイルが生成されますとなりました:<フォームアクション= "/コンテキスト /安全な/テスト" .. ... 

action属性は、<アクション>のパス、およびStruts2のに相当します。<s:form>のaction属性は、<アクション>に対応:Struts1は<フォームはHTML>ので、これはまた、Struts1の欠点からもたらされます 名前、名前が完全に一致するために、経路は、いくつかのレベルを追加することができます。

なぜ私はそれを明確に、それは、それが使用するので、であることを確認するためにいくつかの努力を過ごすん<秒:フォームアクションは=「」>は時々OKで、時々ではない、それは方法でアプリケーション・サーバであることを疑われた、非常に混乱しそうです。率直に言って、ログを正確に書き留めて意味を裏付けており、功績を知ることはまだBenpian完全な内容の赤線の上に書かれています。自分自身、他の人が唯一の霧することができた場合、あなたが他の人の理解を得るためにしようとしている過程で、私たちは言うことができないので

ます。https://my.oschina.net/u/2260184/blog/540572で再現

おすすめ

転載: blog.csdn.net/weixin_34008784/article/details/92186232