일반 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
83 java.util.MissingResourceException: Can't find bundle for base name xxx, locale ko_KR 황제낙엽 2007.06.21 2362
82 [Spring3.1.1][1] RestTemplate 한글 문제 황제낙엽 2018.08.08 683
81 Spring WebFlow Introduction (웹개발을 직관적으로) 황제낙엽 2006.12.09 555
80 Spring Security OAuth2구현 file 황제낙엽 2019.09.05 462
79 Spring Security OAuth 황제낙엽 2019.09.05 435
78 <spring:checkbox> tip! 황제낙엽 2007.10.01 378
77 [Spring3.1.1][3] RestTemplate 한글 문제 황제낙엽 2018.08.08 237
76 Spring MVC 가 아닌 환경에서 Spring Pojo Bean 사용하기 (Pure Java App 또는 Servlet App) 황제낙엽 2009.10.22 233
75 Cugain의 샘플프로젝트 jpetstore 분석기 - (5) applicationContext.xml 분석 황제낙엽 2007.04.21 232
74 스프링 개발팁 황제낙엽 2007.08.17 223
73 Spring Boot에서의 RESTful API 모듈 file 황제낙엽 2020.04.16 216
» SimpleFormController 정리 황제낙엽 2007.09.19 206
71 Spring 과 Spring Boot의 차이 file 황제낙엽 2020.05.26 202
70 Spring의 Exception 황제낙엽 2007.09.17 194
69 Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 164
68 스프링 2와 JPA 시작하기 (한글) 황제낙엽 2007.08.27 142
67 [Spring3.1.1] ResponseBody 한글깨짐 해결법 황제낙엽 2018.08.08 140
66 웹 개발의 변화와 스프링 황제낙엽 2008.03.19 132
65 Spring AOP - Pointcut 황제낙엽 2007.10.02 129
64 유효성체크 (org.springframework.validation.Validator) 황제낙엽 2007.08.17 129