작성
·
55
·
수정됨
0
[질문 내용]
createMemberForm.html안에 <input>태그에 name="name"을 HTML 화면 상에 "spring"이라고 등록하면 MemberForm 컨트롤러에서 개체인 name으로 들어오게 된다는 것을 이해 했는데요. 그렇다면 name="name"이 form.setName한거라고 봐도 무방한가요?
답변 2
0
안녕하세요. soojinkimss님, 공식 서포터즈 코즈위버입니다.
네 맞습니다. INPUT 엘리먼트의 각 속성, name="{이름}" value="{값}" 이 DTO와 매핑될 때 setter 를 이용하게 됩니다.
form.set이름(값); 코드가 실행된다고 생각하시면 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. soojinkimss님.
질문 주신 내용은 스프링 MVC에서 HTTP 요청 데이터를 자바 객체로 바인딩하는 방법에 대한 것입니다. \<input name="name"\>
태그의 값이 MemberForm
객체의 속성으로 자동 매핑되는 과정은 스프링의 데이터 바인딩을 통해 이루어집니다.
간단히 설명드리자면, HTML 폼의 입력 필드의 name
속성과 자바 객체의 필드 이름을 동일하게 설정하면, 스프링이 자동으로 폼 데이터를 해당 객체의 필드에 바인딩해 주게 됩니다. 이는 스프링이 폼을 처리하는 과정에서 내부적으로 setName
메서드를 호출하여 입력값을 객체의 필드에 설정하는 방식으로 작동합니다.
따라서, <input name="name">
부분은 form.setName()
영향을 받는다고 이해하셔도 됩니다. 다만, 이는 스프링의 ModelAttribute
와 같은 기능을 통해 자동으로 처리되는 것이기 때문에, 사용자가 명시적으로 setName
을 호출하지 않아도 동일한 바인딩 효과를 얻을 수 있는 것입니다.
관련하여 추가적인 설명이 필요한 경우, 아래의 유사한 질문들을 참고하시면 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.