thymeleaf 문법 사용하기

Que Lin·2022년 1월 4일
post-thumbnail

thymeleaf 문법 사용하기

  • DTO
    @NotBlank 값이 있어야 할 때
    @Pattern 정규식 사용할 때
    @Length 글자 수
@Data
public class MemberSaveDTO {
    @NotBlank(message = "이메일은 필수입니다.")
    @Pattern(regexp = "[a-zA-Z1-9]{6,12}", message = "이메일은 영어와 숫자로 포함해서 6~12자리 이내로 입력해주세요.")
    private String memberEmail;
    @NotBlank
    @Length(min = 2, max = 8, message = "2~8자로 입력해주세요")
    private String memberPassword;
    private String memberName;
}
  • Controller
  1. form으로 갈 때 모델로 값을 DTO를 담아 감
  2. @Validated @ModelAttribute("member") MemberSaveDTO memberSaveDTO로 html값을 받아 와서 체크함
  3. BindingResult bindingResult 결과 값을 받아 옴
  4. if(bindingResult.hasErrors()){
    return "member/save";
    }로 규칙에 걸리면 save로 돌아가 p태그 실행
@Controller
@RequestMapping("/member/*")
public class MemberController {
    @GetMapping("save")
    public String saveForm(Model model) {
    model.addAttribute("member", new MemberSaveDTO());
        return "/member/save";
    }

    @PostMapping("save")
    public String save(@Validated @ModelAttribute("member") MemberSaveDTO memberSaveDTO, BindingResult bindingResult) {
        System.out.println("MemberController.save");
        System.out.println("memberSaveDTO = " + memberSaveDTO);
        if(bindingResult.hasErrors()){
            return "member/save";
        }
        return "member/login";
    }
  • html
    먼저 결과값을 보내고 에러가 있다면 다시 돌아와 p태그에 받아서 메시지를 출력함
<html lang="en" xmlns:th="http://www.thymeleaf.org">
th:object="${member}"    //담기
th:field="*{memberEmail}"//(name, id 자동생성)
th:if="${#fields.hasErrors('memberEmail')}" 
th:errors="*{memberEmail}"  //p태그에 에러메세지를 보여줌
th:errorclass="field-error" //style 지정
<form action="/member/save" method="post" th:object="${member}">

    이메일 : <input type="text" th:field="*{memberEmail}" placeholder="이메일">
    <p th:if="${#fields.hasErrors('memberEmail')}" th:errors="*{memberEmail}" th:errorclass="field-error"></p>
	<input type="submit" value="회원가입">
</form>

타임리프 문법 어렵지만 계속 보고 이해해 봐야겠다!

profile
1일 1커밋 1일 1벨로그!

0개의 댓글