스프링 폼 컨트롤러 (예 : SimpleFormController
또는 BaseCommandController
)는 명령을 사용하여 HTML 양식과 컨트롤러간에 데이터를 전달합니다. 제 질문은, 지원 모델을 명령 자체로 사용하는 것이 일반적인 관행입니까? 또는 지원 모델의 속성에 해당하는 속성을 가진 별도의 명령을 만드는 것이 일반적입니다.스프링 폼 명령의 의도
제 문제는 문자열 형식이 아닌 속성을 변환 할 때 속성 편집기가 필요하다는 것입니다. 많은 문자열이 아닌 강하게 입력 된 사용자 정의 필드 유형이있는 데이터 모델을 상상해보십시오. 양식 제출시, 특성 편집기는 유효성 검사기가 호출되기 전에 변환을 수행합니다. 형식 변환이 불가능한 경우 (사용자 입력 오류) 유효성 검사기는 자세한 오류 메시지를 제공 할 기회를 얻지 못합니다. HTML 양식에 표시된 것은 모두 일반적인 오류 메시지입니다. 내 related Stackoverflow question을 참조하십시오.
대체 방법은 지원 모델의 각 필드를 복제하는 별도의 명령을 문자열로 작성하는 것입니다. 이렇게하면 유효성 검사기는 각 필드의 문자열 표현을 검증 할 수 있습니다. 컨트롤러의 onSubmit
은 텍스트 기반 명령을 백업 모델로 변환합니다. 스프링에 대한 나의 연구에서 이것은 의도 된 사용법 인 것으로 보인다. 이 길을 걷는 것을 주저하는 것은 각 데이터 모델에 대해 별도의 명령을 작성해야하는 번거로운 방식입니다. 그런 다음 명령과 데이터 모델을 마샬링해야하는 추가 작업이 있습니다. 양식을 직접 백업 모델을 편집하고 속성 편집기를 사용하여 변환하는 것이 훨씬 더 편리합니다. 그러면 문제는 유효성 검사입니다.
다른 사람들이 사용자 정의 형식의 비 문자열 필드를 포함하는 모델의 양식 기반 편집 문제에 어떻게 접근하는지 궁금합니다.