Java/Spring
[Spring] 기본 생성자가 없는 객체 바인딩시키기
윤성탁
2016. 8. 30. 18:57
참고) Bean 설정이 아닙니다.
Controller에서 매핑된 URL로 메서드가 실행되는데요~
이 경우 파라메터에 모델을 선언했다면 URL queryString에 있는 프로퍼티 값이 모델 멤버(setter)와 동일하다면 자동으로 Binding됩니다.
- @ModelAttribute를 생략해도 됩니다.
Controller에서 매핑된 URL로 메서드가 실행되는데요~
이 경우 파라메터에 모델을 선언했다면 URL queryString에 있는 프로퍼티 값이 모델 멤버(setter)와 동일하다면 자동으로 Binding됩니다.
public class Foo { private int id; public void setId(int id) { this.id = id; } public int getid() { return this.id; } } @Controller public class FooController { @RequestMapping("/foo") public String getFooView(Foo fooModel) { return "foo"; } }- 인자가 없는 기본 생성자는 자동으로 데이터가 매칭됩니다.
- @ModelAttribute를 생략해도 됩니다.
기본 생성자가 없는 모델객체는?
위 코드로 그대로 진행하면 에러가 발생합니다.No default constructor found; nested exception is java.lang.NoSuchMethodException: 모델 클래스 이름수정된 코드()
public class Foo { private int id; public Foo(int id) { this.id = id; } public int getid() { return this.id; } } @Controller public class FooController { @ModelAttribute("foo") public Foo getFoo() { return new Foo(10); } @RequestMapping("/foo") public String getFooView(@ModelAttribute("foo") Foo fooModel) { return "foo"; } }- 직접 Controller에 ModelAttribute 설정을 하면 기본 생성자가 없이 직접 생성하여 대응할 수 있습니다.