Struts 2 Annotation(注記)の例
今日は暇にStrutsの公式ドキュメントを见て、Annotationという特性がずっと使われていないことに気づいて、简単に作りたいと思って、公式のリンクによってexampleをダウンロードしました.開けてみると馬鹿な目で、配置も簡単すぎるでしょう.レジスターアクション類のInputメソッドに@Action注釈を追加しただけで、これも私の観念を徹底的に覆して、システムがどんなルールに基づいてactionの経路を定義しているのか、多くのことが理解できませんでした.メソッド呼び出しが完了すると、システムはどのルールに従ってジャンプしますか?どのように自分の構造を手配するか...多くの問題がある.その後、ドキュメントを調べてみると、いろいろな方法がありました.しかし、私が実施する過程で小さな細部に遅れてしまい、ほとんどの人が出会うと思います.ここに書いておきます.
上コード(残りの不要コードは省略)
みんなが気づいたかどうか分かりませんが、私はコードの注釈部分に赤で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プロジェクトでネーミング規則に正しく従う必要があります.そうでなければ、これは大きなトラブルをもたらします.
上コード(残りの不要コードは省略)
- @Namespace("/")
- public class BasicTestAction extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private MessageStore messageStore;
- @Action(value="basic",
- results={@Result(name="success",location="/BasicTest.jsp")}
- )
- //@Action(value="/basic", ...)
- public String execute() throws Exception{
- messageStore = new MessageStore();
- return SUCCESS;
- }
- public MessageStore getMessageStore() {
- return messageStore;
- }
- public void setMessageStore(MessageStore messageStore) {
- this.messageStore = messageStore;
- }
- }
みんなが気づいたかどうか分かりませんが、私はコードの注釈部分に赤で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という名前の特定のディレクトリのみをスキャンします.スキャンの動作順序は次のとおりです.
1.2名前付き変換
Struts 2 conventionプラグインは、すべての注記actionファイル名を特定のフォーマットに変換します.例:LoginAction.java
これにより、末尾のactionを削除し、最初のアルファベットの大文字と小文字を変換すると、LoginAction.actionはlogin.actionに変わります.(完全にそうではありません.例えばBasicTestActionはbasic-testアクセスを使用します)
Struts 2 conventionプラグインの「スキャンアルゴリズム」と「ネーミング変換」の特性は多くの便利さとメリットをもたらしますが、これは私たちのStruts 2プロジェクトでネーミング規則に正しく従う必要があります.そうでなければ、これは大きなトラブルをもたらします.