일반 SimpleFormController 정리

황제낙엽 2007.09.19 12:11 조회 수 : 206 추천:137

sitelink1 http://younghoe.info/category/Spring%20F...ring%20MVC 
sitelink2  
sitelink3  
extra_vars6  

Spring Framework/Spring MVC

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쪽

  1. AbstractFormController.formBackingObject()에 정의되어 있으며, BaseCommandController.createCommand() 호출을 통해 command 객체 생성이 이뤄진다. [본문으로]
  2. ServletRequest를 직접 사용하는 [본문으로]

 

번호 제목 글쓴이 날짜 조회 수
공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
63 [Spring3.1.1][4] RestTemplate 한글 문제 황제낙엽 2018.08.08 89
62 [Spring3.1.1][3] RestTemplate 한글 문제 황제낙엽 2018.08.08 237
61 [Spring3.1.1][2] RestTemplate 한글 문제 황제낙엽 2018.08.08 113
60 [Spring3.1.1][1] RestTemplate 한글 문제 황제낙엽 2018.08.08 683
59 [Spring3.1.1] Eclipse 에 Spring Framework 환경 구축하기 file 황제낙엽 2018.08.08 90
58 웹 개발의 변화와 스프링 황제낙엽 2008.03.19 132
57 Spring MVC 가 아닌 환경에서 Spring Pojo Bean 사용하기 (Pure Java App 또는 Servlet App) 황제낙엽 2009.10.22 233
56 NamedParameterJdbcDaoSupport 몇가지 장점 황제낙엽 2007.11.27 101
55 프로젝트의 기본이 되는 Logging, Exception 처리 전략 황제낙엽 2007.01.30 85
54 Spring AOP - Pointcut 황제낙엽 2007.10.02 129
53 <spring:checkbox> tip! 황제낙엽 2007.10.01 378
» SimpleFormController 정리 황제낙엽 2007.09.19 206
51 Spring의 Exception 황제낙엽 2007.09.17 194
50 스프링 2와 JPA 시작하기 (한글) 황제낙엽 2007.08.27 142
49 스프링 개발팁 황제낙엽 2007.08.17 223
48 유효성체크 (org.springframework.validation.Validator) 황제낙엽 2007.08.17 129
47 Spring 2.0의 XML확장기능 (3) 황제낙엽 2007.08.15 32
46 Spring 2.0의 XML확장기능 (2) 황제낙엽 2007.08.15 73
45 Spring 2.0의 XML확장기능 (1) 황제낙엽 2007.08.15 33
44 CSS와 XHTML을 사용한 효율적인 View 개발 전략 황제낙엽 2007.01.30 104