• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

formBackingObject에 관해 궁금한 부분이 있습니다!

19.02.03 21:15 작성 조회수 241

1

  1. 검색을 해보니 스프링 3.x대에 formBackingObject() 라는 메서드가 있었고, 이것을 이용해 값을 채워넣었던 것에 유래된 용어라고 생각하면 될까요?

  2. 비슷한 개념으로 Command Object라는 용어가 있는걸로 알고 있는데, Command Object는 Form을 객체에 맵핑하는 개념정도로 생각하면 맞을까요?

전반적인 흐름을 생각해봤을때 Form Submit시 핸들러에서 Form 데이터를 받을 때 객체에 맵핑하면 Command Object,

Form에 맞는 객체를 모델을 통해 Form에 돌려줄 때는 Form Backing Object라는 생각이 듭니다.

즉, 용어의 차이가 있을뿐 본질적인 부분은 객체에 데이터를 맵핑하는 것이고 시점이 다를뿐이다로 이해를 하면 될까요?

사용 예를 생각해보건데 [1] 등록 폼에서 폼 서브밋을 발생했을 때 서버에서 에러(Exception)가 발생했을 경우, 이전에 입력한 데이터를 다시 돌려주는 경우,

[2] 수정 폼에서 폼 서브밋 발생했을 때 서버에 에러가 발생했을 경우 혹은 정상적으로 수정 완료하고 수정 폼으로 돌아가야하는 경우.

정도로 간단히 추정이 되는데 적절한 예일까요?

스프링과 이런 방식의 Form처리 하는 부분에 대한 경험이 많지 않아 조금 햇갈리네요..^^;

답변 2

·

답변을 작성해보세요.

1

네 말씀하신대로 그 객체를 보는 관점에 따라 다르게 부를 수 있으나 사실상 폼에 데이터를 채우고 또 바인딩 해오는 같은 객체를 부르는 거구요.

  1. 생성 폼에서 최초 폼을 채울 비어있는 객체를 전달하는 용도
  2. 생성 폼 서브밋 시 (바인딩 및 검증) 에러 발생했을 때 서버에서 다시 폼을 보여주면 해당 커맨드 객체가 Model에 자동으로 담겨 뷰에 전달되고, 그럼 그 커맨드 객체로 다시 폼을 채워 보여주니까 이전에 입력한 값이 다시 보이게 됩니다. (이게 마다 위에서 말씀하신 [1] 인 경우 같네요.)
  3. 수정 폼에서 기존 값을 폼에 채워 보여주는 용도
  4. 수정 폼 서브밋 시 2와 동일한 용도. (아마도 이게 위에서 말씀하신 [2]의 경우)

formBackingObject() 라니.. 우왕 진짜 오랜만에 보는 메소드네요 ㅎㅎ AbstractFormController에 있던 메소드인데 관련 API 읽어보시면 더 정확히 아실 수 있을거 같습니다.

좋은 질문 감사합니다.

0

이요한님의 프로필

이요한

질문자

2019.02.04

답변 감사합니다^^