회원등록

-현재 회원가입 버튼을 누르면 주소창에 members/new처럼 이동 한다.

 

*<a href = ...>

-a라는 태그가 href라는 속성을 가지고 있다.

-hrefhypertext reference의 줄임말이다.

 

1.memberForm 만들기(입력란 만들기)

-여기에서 members/new 회원가입 폼화면이 나와야 한다.

-회원가입 폼화면이 나올 때를 위해 폼객체를 만든다.

 

사진1(실제는 이름만 필수항목 적용)

 

public class MemberForm {

 

@NotEmpty -> javax.validation.constraints

값이 비어있으면 오류메시지를 보여주는 기능

}

 

private final MemberService memberService

Controller가 서비스(MemberService)를 사용한다.

 

*Model model이란?

model.addAttribute(“정보”)

-> controller로 뷰로 넘어갈 때 데이터를 실어서 정보를 넘긴다.

 

return "members/createMemberForm“

->여기로 화면이 출력이 된다.

createMemberForm을 위한 html을 만들어야 한다.

controller가 화면을 이동할 때 빈 memberForm을 가지고 간다,.

validation같은 역할을 해주기 때문에 빈 memberForm을 가지고 가도록 한다.

데이터가 넘어가니 데이터의 화면출력을 위한 createMemberForm.html 생성이 필요하다.

 

2.templates내에 members 디렉터리생성 및 createMemberForm.html 파일생성을 한다.

 

구문사진

화면사진

html 구문 설명

첫구문

a.<head> include style로 작성

 

b.form 태그가 존재한다.

-action ="members/new"로 넘어간다.

-앞서 작성한 @GetMapping members/newget방식으로 오면

-controller에 있는 createform 구문을 통해 createform html이 열린다.

-열려서 렌더링이 된다. 렌더링이 될 때 model addAttributemembeform을 넘겼다.

 때문에 화면에서 이 객체(new member())에 접근할 수 있게 된다.

-이 객체는 createMemberForm.html 파일 내에

<form ~~~~~~th:object="${memberForm}" 과 연결 되어 form내에서는

memberForm 객체를 사용하겠다는 타임리프의 문법적용이 된다.

 

c.th:field=*{name}

-*가 있는 경우는 object(memberform)를 참고하게 되고

MemberControllercreateform구문의 memberform을 참고하게 되고

memberformmemberform 클래스를 참고하여 해당 필드인 name을 참고하게 된다.

 

회원가입작성시 흐름

th:field=*{필드항목}

->th:object="${객체}

->MemberController클래스의 memberform 객체

->memberform 클래스의 해당 필드 private ~필드

 

d.필드항목 구문

-input type 텍스트

-input후 클래스와 placeholder로 넘어간다.

-필드항목 작성시 idname을 각각 항목내용을 똑같은 이름으로 처리 해준다.

-다 작성후 폼 데이터가 button submit을 누르면

members/newmethodpost로 넘어간다.

 

e. 회원가입 클릭 및 필드항목작성후 첫화면으로 돌아가도록 구문 작성

 

*@NotEmpty 어노테이션으로 인하여 회원이름을 빈칸으로 작성시 에러페이지가 나온다.

구문작성

설명

controller의 서버사이드에서 validation을 했는데 필수항목입니다 메시지가 뜬다.

MemberForm에 작성된 메시지임을 확인할 수 있다.

 

MemberFormController 흐름정리

-서버사이드에서 validation을 하고 문제가 생겨서 BindingResult의 데이터가 하나 들어왔다.

result.를 보면 에러에 대한 데이터를 찾아 낼 수 있는 메서드가 많다.

에러가 있으면 다시 createMemberForm으로 보낸다.

타임리프와 스프링부트가 integration이 되어 있기도 하고, 스프링이 바인딩 result를 기본

적으로 createMemberform에 긁어 와서 사용할 수 있도록 작동한다.

 

createformmember.html 흐름정리

th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'">

<p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Incorrect date</p>

 

-createMemberform.htmlfields.hasError에서 name에 에러가 있으면 css를 빨간 테두리(form-control fieldError)로 변경하게 해준다.

 

-fields.haserrors의 이름이 있으면 네임필드에 대해서 에러메세지를 출력해준다.

그래서 필수항목이라는 메시지가 렌더링이 된다.

 

사진

 

*회원이름을 작성안해서 에러가 있더라도 다른항목란에 값을 입력했다면 값을 그대로 가지고 온다.

*javax.validation 개념 구글링 통해 공부 필요

*thymleaf도 홈페이지를 통해 공부가능

 

 

+ Recent posts