Follow Work/SpringbootBoard

[Springboot] 닉네임 만들기 [31]

ReCode.B 2022. 8. 25. 12:32
728x90

SpringBoot  ·  intelliJ  · OracleDB  ·  Thymeleaf 


1. 엔티티추가

SiteUser.java

@Column(unique = true)
private String nickname;

 

2. 회원가입 폼 수정

UserCreateForm.java

 

@NotEmpty(message = "닉네임을 입력해주세요.")
private String nickname;

 

3. 서비스

UserService.java

public SiteUser create(String username, String email, String password, String nickname) {
    SiteUser user = new SiteUser();
    user.setUsername(username);
    user.setNickname(nickname);
    user.setEmail(email);
    user.setPassword(passwordEncoder.encode(password));
    this.userRepository.save(user);
    return user;
}

 

4.  컨트롤러 수정

UserController.java

try {
userService.create(userCreateForm.getUsername(),
        userCreateForm.getEmail(), userCreateForm.getPassword1(), userCreateForm.getNickname());
}catch(DataIntegrityViolationException e) {
    e.printStackTrace();
    bindingResult.reject("signupFailed", "이미 등록된 사용자입니다.");
    return "signup_form";
}catch(Exception e) {
    e.printStackTrace();
    bindingResult.reject("signupFailed", e.getMessage());
    return "signup_form";
}

userCreateFrom.getNickname() 추가

 

 

5. html수정

question_detail.html

본문 위치

<div class="badge bg-light text-dark p-2 text-start">
    <div class="mb-2">
        <span th:if="${question.author != null}" th:text="${question.author.nickname}"></span>
    </div>
    <div th:text="${#dates.format(question.createDate, 'yyyy-MM-dd HH:mm')}"></div>
    <div th:text="|조회수 : ${question.countview}|" class="d-flex justify-content-end fw-bold"></div>
</div>

th:text="${question.author.nickname}" 으로 수정

 

댓글 위치

<div class="badge bg-light text-dark p-2 text-start">
    <div class="mb-2">
        <span th:if="${answer.author != null}" th:text="${answer.author.nickname}"></span>
    </div>
    <div th:text="${#dates.format(answer.createDate, 'yyyy-MM-dd HH:mm')}"></div>
</div>

th:text="${question.author.nickname}" 으로 수정

 

 

question_list.html

글쓴이가 닉네임으로 뜨게 수정

<td><span th:if="${question.author != null}" th:text="${question.author.nickname}"></span></td>

th:text="${question.author.nickname}" 으로 수정

 

 

회원가입

signup_form.html

<div class="mb-3">
  <label for="username" class="form-label">사용자ID</label>
  <input type="text" th:field="*{username}" class="form-control">
</div>
<div class="mb-3">
  <label for="nickname" class="form-label">닉네임</label>
  <input type="text" th:field="*{nickname}" class="form-control">
</div>
<div class="mb-3">
  <label for="password" class="form-label">비밀번호</label>
  <input type="password" th:field="*{password1}" class="form-control">
</div>

아이디 입력과 비밀번호 입력 사이에 닉네임 입력칸을 만들었다.

 

 

 

728x90