sitelink1 | http://younghoe.info/category/Spring%20F...ring%20MVC |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars6 |
2007/03/05 21:11
1. 구현 절차
1) SimpleFormController 상속(extends)
2) formView, successView 속성 설정
3) 서비스 객체 설정
4) doSubmitAction() 메소드 구현
[이하 선택적]
5) referenceData() 오버라이딩: 셀렉트(drop-down box)나 체크박스 그룹을 표시하기 위해 오퍼레이션이 필요할 때
6) formBackingObject() 오버라이딩: commandClass의 인스턴스를 form 바인딩을 위한 객체(form backing object)로 사용하는 것을 변경하고 싶을 때
2. 설정 가능한 프로퍼티
- commandClass: 설정한 클래스의 인스턴스를 기본 form-backing 객체로 사용함. 부모 클래스의 formBackingObject() 구현1 에 의하면 디폴트 생성자로 commandClass 인스턴스를 생성한다.
- formView, successView: 폼(form)을 포함하는 뷰와 폼 제출 및 처리 이후에 보여질 뷰의 논리적 이름. 더블 서밋 문제 해결을 위해서 successView 이름 앞에 redirect: 접두어를 붙이면, POST 이후에 연이러 GET 요청을 발생시켜서 form이 재전송 되는 것을 방지해준다.
- sessionForm: 폼이 처음 보여질 때 새로운 객체를 생성할 것인지와 세션에 객체를 저장할지 여부를 결정. 커맨드 객체가 DB 오퍼레이션을 요구하는 경우처럼 성능 이슈가 있는 경우는 true를 고려해봐야 한다. 디폴트는 false
- bindOnNewForm: true로 설정하여 새로운 폼이 보여지는 시점에서 바인딩이 이뤄지게 할 수 있다. 디폴트는 false.
- validators: 데이터 바인딩 이후의 validation 작업을 수행할 객체 지정
- validateOnBinding: 디폴트는 true이며, false 지정시 validation이 일어나지 않음
- commandName: 디폴트인 command를 다른 이름으로 변경하고자 할 때
3. 웍플로우 및 웍플로우 수정을 위한 콜백/템플릿 메소드
Expert Spring MVC and Web Flow 151쪽의 다이어그램을 보면 SimpleFormController의 웍플로우를 알 수 있다. 이글에서는 주요 콜백/템플릿 메소드의 용도에 초점을 맞춰서 살펴본다.
- Map referenceData(): 커맨드 객체 이외의 데이터가 필요할 때. 셀렉트 박스나 체크박스 그룹 등.
- initBinder(): 바인터에 Custome property editor 등록하는데 사용.
- onBind(): 고유의 바인딩 방안을 적용하려고 할 때 사용. 자바 스크립트나 hidden 필드를 없앨 수 있다.
- onBindAndValidate(): Validator 없이 혹은 Validator로는 불가능한2 validation을 수행하고자 할 때.
- ModelAndView onSubmit(), void doSubmitAction(): 데이터바인딩과 validation이 성공한 이후에 호출
- isFormChangeRequest(): 폼 제출 이전에 화면 변화가 필요한 경우. 가령, 국가를 선택한 이후에 관련 도시가 나타나는 폼을 처리하는 경우가 예가 된다.
참고
- Professional Java Development with the Spring Framework 467-474쪽
- Spring Framework 2.0.2 소스 코드
- Expert Spring MVC and Web Flow 151쪽