Spring MVC宣言-@ModelAttribute


@ModelAttribute

  • 作業
  • オブジェクトを生成します.
  • 要求パラメータの名前でオブジェクトのpropertyを検索します.
  • 対応するプログラムのsetterを呼び出し、パラメータ値を入力(バインド)する.
  • import lombok.Data;
    
    @Data
    public class DataEx {
      private String name;
      private int age;
    }
    @ModelAttribyteを適用する前に
    @Controller
    public class ModelAttriuteTest {
    
      @ResponseBody
      @RequestMapping("/model-Attribute-v1")
      public String modelAttributeV1(@RequestParam String name, @RequestParam int age) {
      
        DataEx dataEx = new DataEx();
        dataEx.setName(name);
        dataEx.setAge(age);
        
        log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
        return "ok";
      }
    
    }
    @ModelAttribyte適用後
    @Controller
    public class ModelAttriuteTest {
    
      @ResponseBody
      @RequestMapping("/model-Attribute-v1")
      public String modelAttributeV1(@ModelAttribute HelloData helloData) {
      
        log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
        return "ok";
      }
    
    }

    重複データの適用


    反復データ
  • の表示を継続する必要がある場合は、model.addAttribute(...)を使用して挿入を継続する必要があります.
  • この時点で@ModelAttribute@ModelAttribute("regions")の領域を使用して返される値は、自動的にモデルに含まれ、「コントローラを呼び出すときに、このデータが常にモデルに含まれる」ことを保証します.
  •     @ModelAttribute("regions")
        public Map<String, String> regions() {
            Map<String, String> regions = new LinkedHashMap<>(); 
            regions.put("SEOUL", "서울");
            regions.put("BUSAN", "부산");
            regions.put("JEJU", "제주");
    
            return regions;
        }
    ->領域()を含むコントローラを呼び出すと、モデルには常にこのデータが含まれます.