카테고리 없음

19.ModelAttribute의 특징

웹꽃기사 2020. 11. 5. 23:59

이번에는 model.addAttribute에 넣지안고 실행해본다 매개변수 vo타입의 변수명과 

 

 

 

 

jsp의 변수명만 맞춰주고 실행하면

 

 

 

 

 

 

add를 하지 않았는데 실행이 된다.

 

 

 

 

 

 

심지어 @ModelAttribute 를 빼고 실행해도 나온다.

어노테이션 @ModelAttribute는 매개변수에 VO가 있으면 VO클래스 명 HaksaengStatusVO 라 치면 

앞글짜만 소문자로 바꿔주고 haksaengStatusVO 이 이름 그대로 모델에 자동으로 넣어준다.(뒤에 vo 타입 변수명은 상관없음) 어노테이션 @ModelAttribute 을 붙이지 않아도 되는 이유는 없으면 스프링이 자동으로 붙여줘서 그런거다

 

 

 

 

 

 

자동으로 명명해주지만 짧게 vo로 사용을 하고 싶은데 

클래스명에서 앞글짜만 소문자로 넣어준걸 모델에 키값으로 넘겨주게 되서 

 

 

 

 

 

jsp에서 vo로 쓴다 한들 매개변수에 명명한 변수명 vo로 오는게

아닌  haksaengStatusVO 로 오기때문에 vo로는 아무것도 출력되지 않는다.

 

 

 

 

 

 

 

이런식으로 하면되겠지만 이미 자동으로 모델에 넣어준 값들인데

또 이렇게 사용하는건  두번 넣어주는게 되므로 적합하지 않다.

(이닛메서드의 매개변수에서 자동으로 vo클래스명의 앞글짜를 소문자로 만 바꿔서

 키값으로 쓰고 값을 넣어주기때문에 똑같은 쿼리 스트링을 두번 넣어주고게되는것)

 

 

 

 

 

이런식으로 ("vo") 라고 alias 를 vo에 담겨서 이제서야 vo로 쓸 수 있다.

 

 

 

 

 

 

별칭 주고 사용할 경우 어노테이션 없이는 불가능하고

별칭을 주지않고 쓸 생각이더라도 어노테이션을 사용해주는게 가독성이 좋으니 무조건 써주자