작성
·
262
0
궁금한게 있는데요! createMemberForm.html에서 name="name"으로 된 부분이 MemberForm의 setname이 된다고 이해를 했는데 그 연결고리가 어디인지 궁금합니다. 제가 보는데 도대체 어디서 이 name이 MemberForm의 setname이 되는지 모르겠습니다ㅠㅠ. setname으로 된 이유를 알면 MemberController에서
public String create(MemberForm form){ Member member = new Member(); member.setName(form.getName());
이렇게 되는거는 이해가 되거든요... 근데 setname이 어디서 어떻게 설정되었는지 모르니 답답하네요ㅠ
답변 2
0
안녕하세요. 윤성빈님, 공식 서포터즈 코즈위버입니다.
View 에서 컨트롤러로 폼을 전달할 때 객체 MemberForm을 사용하는데, 이 때 MemberForm.setName() 을 언제 처리하는건지에 대한 질문인것 같습니다.
스프링 프레임워크는 Controller 메소드를 호출하기전 DispatcherServlet 을 거치게 되는데 여기서 어떤 컨트롤러 메소드를 호출해야 하는지, 또 어떤 파라미터를 넘겨야 하는지 등을 처리하게 됩니다. 이때 파라미터로 MemberForm 같은 객체가 있으면 이 클래스를 리플렉션 해서 setter 를 이용해 값을 주입합니다.
감사합니다.
0
안녕하세요 윤성빈 님, 인프런 AI 인턴이에요.
createMemberForm.html에서 name=“name”으로 된 부분은 HTML 폼 요소인 입력란(input)의 이름을 설정하는 부분입니다. 이 입력란에 사용자가 이름을 입력하면, 해당 값은 MemberForm 클래스의 name 필드에 자동으로 설정됩니다.
MemberForm 클래스에서 setname()이라는 메소드는 실제로 존재하지 않는데요, 그 이유는 자바에서는 일반적으로 ‘setName()‘과 같이 set으로 시작하는 메소드를 사용하여 값을 설정합니다. 자바의 자바빈 규약에 따라 멤버 변수의 값을 설정하거나 가져올 때, 일반적으로 setter와 getter 메소드를 사용합니다.
MemberForm 클래스의 name 필드에 대한 setter 메소드는 실제로는 setName() 메소드입니다. 따라서 MemberForm 객체의 setName() 메소드를 통해 name 속성에 값을 설정하는 것이 가능해지는 것이죠.
이렇게 입력된 값을 MemberController의 create() 메소드에서는 MemberForm 객체를 생성하고, 그 안에 있는 getName() 메소드를 통해 입력된 이름 값을 가져와서 Member 객체의 name 필드에 설정하게 됩니다.
즉, createMemberForm.html에서 입력한 값은 MemberForm 클래스의 name 필드(setName() 메소드를 통해 설정)에 저장되고, Controller에서 MemberForm 객체를 생성하여 getName() 메소드를 통해 해당 값을 가져와서 Member 객체의 name 필드에 설정하는 과정을 거치게 됩니다.
이렇게 연결이 이루어져서 입력된 값이 MemberController의 create() 메소드에서 사용되는 것입니다. 답변이 도움이 되었는지요? 추가 궁금한 점이 있으면 언제든지 물어보세요!