Struts 2 Annotation(注記)の例


今日は暇にStrutsの公式ドキュメントを见て、Annotationという特性がずっと使われていないことに気づいて、简単に作りたいと思って、公式のリンクによってexampleをダウンロードしました.開けてみると馬鹿な目で、配置も簡単すぎるでしょう.レジスターアクション類のInputメソッドに@Action注釈を追加しただけで、これも私の観念を徹底的に覆して、システムがどんなルールに基づいてactionの経路を定義しているのか、多くのことが理解できませんでした.メソッド呼び出しが完了すると、システムはどのルールに従ってジャンプしますか?どのように自分の構造を手配するか...多くの問題がある.その後、ドキュメントを調べてみると、いろいろな方法がありました.しかし、私が実施する過程で小さな細部に遅れてしまい、ほとんどの人が出会うと思います.ここに書いておきます.
上コード(残りの不要コードは省略) 

  
  
  
  
  1. @Namespace("/"
  2. public class BasicTestAction extends ActionSupport { 
  3.     private static final long serialVersionUID = 1L; 
  4.     private MessageStore messageStore; 
  5.     @Action(value="basic"
  6.             results={@Result(name="success",location="/BasicTest.jsp")} 
  7.             ) 
  8.     //@Action(value="/basic", ...)       
  9.     public String execute() throws Exception{ 
  10.         messageStore = new MessageStore(); 
  11.         return SUCCESS; 
  12.     }    
  13.     public MessageStore getMessageStore() { 
  14.         return messageStore; 
  15.     } 
  16.     public void setMessageStore(MessageStore messageStore) { 
  17.         this.messageStore = messageStore; 
  18.     }    

みんなが気づいたかどうか分かりませんが、私はコードの注釈部分に赤でvalue値の設定をハイライトしました.はい、そうです.この目立たない細部が私に1時間もやらせました.カップですね.
以前のXMLファイル定義では、actionの定義に「/」というルートパス文字は一般的に追加されませんでした.なぜなら、ルートパスでも同じように定義されるので、Namespaceにグローバルパスを書きます.これは間接的に私の間違いをもたらして、すべて公式の例が暑くて災いをもたらして、テニマ坑のお父さん.公式例におけるRegister Actionのinputメソッドは,@Action("register-input")のように定義されており,クラスにも@Namespace定義はない.私たちも作りましょう.長い間デバッグしても結果が出ず、ずっとno action mappingの間違いを言っています.私の心は砕けています.N+1回のテストを経てやっとこの問題を発見しました.私は簡単ですか.特に、迷っている人たちに書きます.@Namespaceを追加するか、@Actionにフルパスを書くか、actionの名前を書くだけではありません.
(以下の規則が不完全である):
1、Struts 2 Annotation概念
Struts 2注記はStruts 2 convention pluginによってサポートされています.したがって,「スキャン方式」と「ネーミング変換」メカニズムの背後にあるものを理解しなければならない.
 
1.1 Struts 2対注記のスキャン順序
Struts 2は、struts、struts 2、actionまたはactionsという名前の特定のディレクトリのみをスキャンします.スキャンの動作順序は次のとおりです.
  • は、「struts、struts 2、actionまたはactions」というパッケージに存在する注釈クラスを先にスキャンする.
  • 次に、次の条件に一致するファイルをスキャンします.
  • com.opensymphony.xwork 2.Actionインタフェースを実現する.
  • com.opensymphony.xwork 2.ActionSupportクラスから継承されます.
  • ファイル名は、Action(UserAction、LoginActionなど)
  • で終わる.

    1.2名前付き変換
    Struts 2 conventionプラグインは、すべての注記actionファイル名を特定のフォーマットに変換します.例:LoginAction.java
  • まず、ファイル名の末尾の「Action」単語を削除し、存在する場合.
  • 次に、ファイル名の最初のアルファベットを小文字に変換します.

  • これにより、末尾のactionを削除し、最初のアルファベットの大文字と小文字を変換すると、LoginAction.actionはlogin.actionに変わります.(完全にそうではありません.例えばBasicTestActionはbasic-testアクセスを使用します)
    Struts 2 conventionプラグインの「スキャンアルゴリズム」と「ネーミング変換」の特性は多くの便利さとメリットをもたらしますが、これは私たちのStruts 2プロジェクトでネーミング規則に正しく従う必要があります.そうでなければ、これは大きなトラブルをもたらします.