찾다

 >  Q&A  >  본문

java - SpringMVC中的@ModelAttribute注解是可有可无的吗?

在学习SpringMVC中的使用Controller接受表单的值,
按照《Spring实战》中的代码,Controller如下:

    @RequestMapping(value = "/register", method = POST)
    public String processRegistration(Spitter spitter) {
        System.out.println(spitter.getUsername());
        spitterRepository.save(spitter);
        return "redirect:/spitter/" + spitter.getUsername();
    }

打印那行是我自己加的,用来验证表单的值是否绑定到了Spitter对象
而Spring官方的教程中在Spitter前面多了一个@ModelAttribute注解,
但是在这个例子里面产生的效果和不加似乎是一样的,都能够绑定表单信息到对象中,
所以想问下这个注解的功能?在这个例子中是不是即使不显示写也能有一样的功能?

天蓬老师天蓬老师2803일 전629

모든 응답(3)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-18 10:55:45

    아니요, @ModelAttribute에는 두 가지 기능이 있습니다.
    하나는 데이터를 요청에서 꺼내어 컨트롤러 메서드의 매개변수로 캡슐화하는 것입니다.
    다른 하나는입니다. 이 데이터를 모델에 배치하면 JSP 페이지에서 EL 표현식을 사용하여 데이터를 검색하고 표시할 수 있습니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:55:45

    @ModelAttribute 주석이 매개변수에 추가되면 @RequestMapping을 실행하기 전에 @ModelAttribute의 키가 먼저 발견됩니다. @ModelAttribute가 없고 사용할 수 없거나 획득할 수 없는 경우 spitter 객체는 다음을 통해 인스턴스화됩니다. 반영한 후 전달된 요청은 개체에 설정한 값을 가져옵니다. 결과는 같아도 과정은 다릅니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 10:55:45

    그 나름의 특성이 있기는 하지만, 너무 오랫동안 써본 적이 없어서 무시해도 될 것 같아요. @ModelAttribute

    회신하다
    0
  • 취소회신하다