본문 바로가기

CS 잡지식

ThymeLeaf의 getter,setter 접근법(feat. *{객체의 속성})

@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를 정의하자.