@Getter@Setter
public class MemberForm {
@NotEmpty(message = "회원 이름은 필수입니다") // validation 라이브러리 추가해야 함!
private String name;
private String city;
private String street;
private String zipcode;
}
@Controller
@RequiredArgsConstructor
public class MemberController { // [회원 가입] 페이지를 위한 controller.
//1] 회원 가입 페이지를 보여 주고,
private final MemberService memberService;
@GetMapping("/members/new")
private String createForm(Model model){
model.addAttribute("memberForm",new MemberForm()); // html 페이지에 빈 MemberForm 객체를 들고 가는 이유 : @NotEmpty() 등의
return "members/createMemberForm"; // validation 기능을 html 페이지에서 사용하기 위해!
}
}
<form role="form" action="/members/new" th:object="${memberForm}" method="post">
<div class="form-group">
<label th:for="name">이름</label>
<!-- *{} : MemberForm 클래스에 있는 getter,setter로 데이터를 가지고 온다.(getter,setter 접근법)-->
<input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요"
th:class="${#fields.hasErrors('name')}? 'form-control
fieldError' : 'form-control'">
-> *{객체 속성 }을 만나면, thymeLeaf는 MemberForm에서 정의해 놓은 getter,setter를 통해서 값을 속성값을 들고 온다.
MemberForm 클래스에 getter,setter가 없으면, 해당 페이지를 렌더링할 때, 에러가 난다.
-> HTML에서 Model에 객체를 넣어서 그 속성값을 사용하려고 할 때는 반드시, 해당 객체에 getter, setter를 정의하자.
'CS 잡지식' 카테고리의 다른 글
스프링 부트 3.X.X 버전에 따른 설정 변경 (0) | 2023.05.03 |
---|---|
JPA [수정(update)]의 2가지 전략(feat. dirty checking, 병합(merge) ) (0) | 2023.05.02 |
view resource 등록하는 법(feat. bootstrap,jumbotron-narrow.css) (0) | 2023.05.02 |
인텔리J, 서버 실행 중 코드 수정(feat. Build -> recompile) (0) | 2023.05.02 |
인텔리J에서 문자열 찾는 단축키 (feat. [ctrl + alt + P]) (0) | 2023.05.02 |