1. UserUpdateForm 엔티티 작성
2. UserController.java 작성
3. UserService.java 작성
4. user_form.html 작성
1. UserUpdateForm 엔티티 작성
- 회원가입을 해줬을 때 만들어줬던 방식과 같이 UserUpdateForm.java 를 작성
파일 경로 : com.mysite.sbb/user/UserUpdateForm.java
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotEmpty;
@Getter
@Setter
public class UserUpdateForm {
@NotEmpty(message = "닉네임은 필수항목입니다.")
private String nickname;
}
2. UserService.java 작성
- SiteUser와 nickname을 아규먼트로 받아오게 함
- setNickname에 받아온 nickname을 넣어주고 userRepository에 저장하게 만듦
파일 경로 : com.mysite.sbb/user/UserService.java
public SiteUser modify(SiteUser siteUser, String nickname) {
siteUser.setNickname(nickname);
this.userRepository.save(siteUser);
return siteUser;
}
3. UserController.java 작성
3-1) @GetMapping 작성
- userService에 있는 getUser를 이용하여 현재 로그인 되어있는 사용자의 정보를 가져옴
- model.addAttribute로 html에서 siteUser의 변수를 가져올 수 있음
파일 경로 : com.mysite.sbb/user/UserController.java
@PreAuthorize("isAuthenticated()")
@GetMapping("/userinfo")
public String userinfo(UserUpdateForm userUpdateForm, Model model, Principal principal) {
SiteUser siteUser = this.userService.getUser(principal.getName());
model.addAttribute("siteUser", siteUser);
return "user_form";
}
3-2) @PostMapping 작성
- userService에 작성한 modify 메소드에 SiteUser와 userUpdateForm에서 닉네임을 가져와 넣어줌
파일 경로 : com.mysite.sbb/user/UserController.java
@PreAuthorize("isAuthenticated()")
@PostMapping("/userinfo")
public String usermodify(UserUpdateForm userUpdateForm, Principal principal) {
SiteUser siteUser = this.userService.getUser(principal.getName());
this.userService.modify(siteUser, userUpdateForm.getNickname());
return "redirect:/user/userinfo";
}
* PostMapping 단계에서 자꾸 닉네임 값에 null 이 들어갔었다
터미널에서 siteUser nickname과 userUpdateForm의 nickname을 확인해 본 결과
siteUser.getNickname자체가 null 값이었고 userUpdateForm.Nickname에 값이 들어가 있어서 그런거였음
그것도 모르고 userUpdateForm.setNickname(userUpdateForm.getNickname()); 을 해주고 있었으니 당연한 거였음
4. user_form.html 작성
-
파일 경로 : resources/templates/UserController.java
<html layout:decorate="~{layout}">
<div layout:fragment="content" class="container my-3">
<div class="my-3 border-bottom">
<div>
<h4>회원정보</h4>
</div>
</div>
<form th:action="@{/user/userinfo}" th:object="${userUpdateForm}" method="post">
<div th:replace="form_errors :: formErrorsFragment"></div>
<div class="mb-3">
<label for="username" class="form-label">사용자ID</label>
<input type="text" th:field="${siteUser.username}" readonly class="form-control">
</div>
<div class="mb-3">
<label for="nickname" class="form-label">닉네임</label>
<input type="text" th:field="${siteUser.nickname}" class="form-control">
</div>
<div class="mb-3">
<label for="email" class="form-label">이메일</label>
<input type="email" th:field="${siteUser.email}" id="email" readonly class="form-control">
</div>
<button type="submit" class="btn btn-primary" onclick="alert('수정되었습니다.')">수정하기</button>
</form>
</div>
</html>
추가 기능 넣을 것
1. 닉네임 NULL값 안들어가게 설정
2. 비밀번호 변경 설정
3. 프로필 사진 설정
'Language > Springboot' 카테고리의 다른 글
[Springboot] Jsoup 이용하여 웹 크롤링하기 (0) | 2022.09.27 |
---|---|
[Stringboot] 네이버지도 API에 현재 위치 받아오기 (0) | 2022.08.28 |
[Stringboot] 제이쿼리(jQuery) 적용하기 (0) | 2022.08.28 |
[Springboot] 웹에 네이버지도 API 추가하기 (0) | 2022.08.26 |
[Stringboot] 게시글 댓글 페이징 기능 구현하기 (1) | 2022.08.25 |