Spring mvc@ModelAttribute注記の使用


@ModelAttribute使用の詳細
1.@ModelAttributeコメントメソッド      例(1),(2),(3)と同様に,@ModelAttributeによって注釈される方法は,このコントローラの各方法の実行前に実行されるので,1つのコントローラが複数のURLをマッピングする使い方には慎重に用いる.         (1)@ModelAttributeコメントvoid戻り値のメソッド      
[java]  view plain
 copy
 print ?
@Controller  
    public class HelloWorldController {  
  
        @ModelAttribute  
        public void populateModel(@RequestParam String abc, Model model) {  
           model.addAttribute("attributeName", abc);  
        }  
  
        @RequestMapping(value = "/helloWorld")  
        public String helloWorld() {  
           return "helloWorld";  
        }  
    }  
  
  
    この例では、リクエスト/helloWorldを取得すると、populateModelメソッドがhelloWorldメソッドの前に呼び出され、リクエストパラメータ(/helloWorld?abc=text)attributeNameというmodelプロパティに追加すると、実行後にhelloWorldが呼び出され、戻りビュー名helloWorldとmodelが@ModelAttributeメソッドによって生成されます.この例ではmodelプロパティ名とmodelプロパティオブジェクトにはmodel.addAttribute()が実装されていますが、メソッドにModelタイプのパラメータを追加することを前提としています.    URLやpostにサブパラメータが含まれていない場合は、エラーが報告されますが、このメソッドは必要ありません.リクエストのメソッドを完全に書くことができます.このパラメータが欠けてもエラーはありません.
[java]  view plain
 copy
 print ?
       @RequestMapping(value = "/helloWorld")  
        public String helloWorld(String abc) {  
           return "helloWorld";  
        }  
  
  
             (2)@ModelAttributeコメント特定のクラスを返す方法      
[java]  view plain
 copy
 print ?
@ModelAttribute  
    public Account addAccount(@RequestParam String number) {  
       return accountManager.findAccount(number);  
    }  
  
  
  
 
    この場合、モデル属性の名前は指定されず、このメソッドがAccountタイプを返すように、戻りタイプによって暗黙的に表されます.このモデル属性の名前はaccountです.    この例では、モデル属性名には戻りオブジェクトタイプの暗黙的な表現があり、モデル属性オブジェクトはメソッドの戻り値です.特定のパラメータは必要ありません.         (3)@ModelAttribute(value=")コメント特定のクラスを返す方法      
[java]  view plain
 copy
 print ?
@Controller  
    public class HelloWorldController {  
  
        @ModelAttribute("attributeName")  
        public String addAccount(@RequestParam String abc) {  
           return abc;  
        }  
  
        @RequestMapping(value = "/helloWorld")  
        public String helloWorld() {  
           return "helloWorld";  
        }  
    }  
  
  
 
    この例では、@ModelAttributeコメントのvalueプロパティを使用して、modelプロパティの名前を指定します.modelプロパティオブジェクトはメソッドの戻り値です.特定のパラメータは必要ありません.         (4)@ModelAttributeと@RequestMappingが同時に1つのメソッドを注釈する      
[java]  view plain
 copy
 print ?
@Controller  
    public class HelloWorldController {  
  
        @RequestMapping(value = "/helloWorld.do")  
        @ModelAttribute("attributeName")  
        public String helloWorld() {  
           return "hi";  
        }  
    }  
  
  
 
    この場合、このメソッドの戻り値はビュー名を表すのではなく、modelプロパティの値であり、ビュー名はRequestToViewName Translatorによって要求「/helloWorld.do」に従って論理ビューhelloWorldに変換されます.    Model属性名は@ModelAttribute(value=")で指定されており、requestにkey=attributeName、value=hiがカプセル化されていることに相当します.     2.@ModelAttributeコメントメソッドのパラメータ      (1)モデルから取得          
[java]  view plain
 copy
 print ?
@Controller  
    public class HelloWorldController {  
  
        @ModelAttribute("user")  
        public User addAccount() {  
           return new User("jz","123");  
        }  
  
        @RequestMapping(value = "/helloWorld")  
        public String helloWorld(@ModelAttribute("user") User user) {  
           user.setUserName("jizhou");  
           return "helloWorld";  
        }  
    }  
  
  
 
    この例では,@ModelAttribute("user")User注釈メソッドパラメータ,パラメータuserの値はaddAccount()メソッドのmodel属性に由来する.    このときメソッドボディに@SessionAttributes("user")が表示されていない場合、scopeはrequest、表示されている場合、scopeはsession         (2)FormフォームまたはURLパラメータから取得する(実際には、このコメントをしなくてもuserオブジェクトを取得できる)           
[java]  view plain
 copy
 print ?
@Controller  
    public class HelloWorldController {  
  
        @RequestMapping(value = "/helloWorld")  
        public String helloWorld(@ModelAttribute User user) {  
           return "helloWorld";  
        }  
    }  
  
  
 
    このときこのUserクラスには必ずパラメータのないコンストラクション関数があることに注意してください.
   (3)取得できるだけでなく、隠しモデルオブジェクトにない場合は、隠しモデルオブジェクトに追加することもできます.
@RequestMapping(value="/create/success")
	public String createSuccess(@ModelAttribute("message") String message,@ModelAttribute("aaa") String aaa){
		return "index";
	}
@ModelAttribute("aaa") String aaa                     。